# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .py
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Python 3
#     language: python
#     name: python3
# ---

# ## Programming Assignment: Activation Function
#
# Chào mừng các bạn đến với bài tập lập trình về xây dựng các hàm kích hoạt (Activation Function). Trước khi thực hiện bài tập này, các bạn nên học kỹ các kiến thức lý thuyết. Nếu có bất kỳ câu hỏi hay vấn đề nào xảy ra, các bạn hãy để lại comment trực tiếp bên dưới bài đăng hoặc liên hệ qua Fanpage AIVIETNAM.
#
# ### Hướng dẫn làm bài 
# - Trong bài tập này bạn sẽ sử dụng Python 3.
# - Cố gắng không sử dụng các vòng lặp (for, while). 
# - Hãy sử dụng các hàm của thư viện numpy.
# - Sau khi bạn viết Code của mình xong, hãy chạy dòng Code đó để xem kết quả bên dưới. 
#
# Các bạn sẽ bắt đầu Code trong phần `### START CODE HERE ###` và `### END CODE HERE ###`. Các bạn nhớ đừng sửa bất kỳ dòng Code nào bên ngoài những câu lệnh này. 
#
# Sau khi viết xong Code của bạn, bạn hãy ấn "SHIFT"+"ENTER" để thực hiện chạy lệnh của Cell đó. 
#
# Trong phần Code: các bạn hãy cố gắng thực hiện ít dòng Code nhất theo chỉ định "(≈ X lines of code)". Mặc dù đây không phải là hạn chế về số dòng Code của bạn, nhưng hãy tối ưu sao cho ít nhất có thể.
#
# ### Nhiệm vụ 
#
# Trong bài tập này bạn sẽ thực thi 6 hàm kích hoạt phổ biến bao gồm: Sigmoid, Tanh, ReLU, PReLU, ELU, Softplus.

# Bộ dữ liệu và thư viện cần thiết
import numpy as np 
data = np.asarray([1,5,-4,3,-2])


# ### 1. Hàm Sigmoid 
#
# Các bạn có thể bỏ qua phần này vì đã có ví dụ trong lý thuyết.
#
# <img src="images/activation-sigmoid.png" style="width:30%;height:30%;">
#

# +
def sigmoid_function(data):
    ### START CODE HERE ###
    result = None
    ### END CODE HERE ###
    return result

sigmoid_function(data)


# -

# **Đầu ra kỳ vọng:**
#
# ```
# array([0.73105858, 0.99330715, 0.01798621, 0.95257413, 0.11920292])
# ```

# ### 2. Hàm tanh 
#
# <img src="images/activation_tanh.png" style="width:30%;height:30%;">

# +
def tanh_function(data):
    ### START CODE HERE ###
    result = None
    ### END CODE HERE ###
    return result

tanh_function(data)


# -

# **Đầu ra kỳ vọng:**
# ```
# array([ 0.76159416,  0.9999092 , -0.9993293 ,  0.99505475, -0.96402758])
# ```

# ### 3. Hàm ReLU
#
# <img src="images/activation_relu.png" style="width:30%;height:30%;">
#

# +
def ReLU_function(data):
    ### START CODE HERE ###
    result = None
    ### END CODE HERE ###
    return result 

ReLU_function(data)


# -

# **Đầu ra kỳ vọng:**
#
# ```
# array([1, 5, 0, 3, 0])
# ```

# ### 4. Hàm PReLU
#
# <img src="images/activation_prelu.png" style="width:30%;height:30%;">
#

# +
def PReLU_function(data, alpha = 0.1):
    ### START CODE HERE ###

    None
    
    ### END CODE HERE ###
    return result 

PReLU_function(data)


# -

# **Đầu ra gì vọng:**
#
# ```
# [1, 5, -0.4, 3, -0.2]
# ```

# ### 5. Hàm ELU
#
# <img src="images/activation_elu.png" style="width:30%;height:30%;">
#

# +
def ELU_function(data, alpha = 0.1):
    ### START CODE HERE ###

    None
    
    ### END CODE HERE ###
    return result 

ELU_function(data)


# -

# **Đầu ra kỳ vọng:**
#
# ```
# [1, 5, -0.09816843611112658, 3, -0.08646647167633874]
# ```

# ### 6. Hàm Softplus
#
# <img src="images/activation_softplus.png" style="width:30%;height:30%;">
#

# +
def softplus_function(data, alpha = 0.1):
    ### START CODE HERE ###
    result = None
    ### END CODE HERE ###
    return result

softplus_function(data)
# -

# **Đầu ra kỳ vọng:**
#
# ```
# array([1.31326169, 5.00671535, 0.01814993, 3.04858735, 0.12692801])
# ```

StarcoderdataJupyterScriptsDedupFiltered