import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
# Original: https://github.com/alrojo/tensorflow-tutorial/blob/master/lab1_FFN/lab1_FFN.ipynb
# PLOT OF DIFFERENT OUTPUT USNITS
x = np.linspace(-3, 4, 100)
relu = lambda x: np.maximum(0, x)
leaky_relu = lambda x: np.maximum(0, x) + 0.1 * np.minimum(0, x)
elu = lambda x: (x > 0)*x + (1 - (x > 0)) * (np.exp(x) - 1)
sigmoid = lambda x: (1+np.exp(-x))**(-1)
def softmax(w, t = 1.0):
e = np.exp(w)
dist = e / np.sum(e)
return dist
x_softmax = softmax(x)
plt.figure(figsize=(8,6))
plt.plot(x, relu(x), label='ReLU', lw=2)
plt.plot(x, leaky_relu(x), label='Leaky ReLU',lw=2)
plt.plot(x, elu(x), label='Elu', lw=2)
plt.plot(x, sigmoid(x), label='Sigmoid',lw=2)
plt.legend(loc=2, fontsize=16)
plt.title('Non-linearities', fontsize=20)
plt.ylim([-2, 4])
plt.xlim([-3, 3])
# softmax
# assert that all class probablities sum to one
print(np.sum(x_softmax))
assert abs(1.0 - x_softmax.sum()) < 1e-8