Last active
December 27, 2018 17:21
-
-
Save ashishrana160796/5e3612ec6d312ebcb9c6db7e27980283 to your computer and use it in GitHub Desktop.
NAC and NALU unit 3-D plot python code with matplotlib library. Can be used as a reference for plotting sigmoid, tanh function also.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
''' | |
NAC 3-D Plot Code | |
''' | |
# import statements | |
from mpl_toolkits.mplot3d import Axes3D | |
import matplotlib.pyplot as plt | |
from matplotlib import cm | |
from matplotlib.ticker import LinearLocator, FormatStrFormatter | |
import numpy as np | |
# 3-D axis creation | |
fig = plt.figure() | |
ax = fig.gca(projection='3d') | |
# Two functions for multiplication, and creating transformation matrix W | |
sigmoid = lambda y: 1 / (1 + np.exp(-y)) | |
tanh = lambda x: ((np.exp(x)-np.exp(-x))/(np.exp(x)+np.exp(-x))) | |
# Make data | |
X = np.arange(-10, 10, 0.25) | |
Y = np.arange(-10, 10, 0.25) | |
X, Y = np.meshgrid(X, Y) | |
# Final function for Transformation Matrix W | |
Z = tanh(X)*sigmoid(Y) | |
# Axis Labelling | |
ax.set_xlabel('tanh(x)', fontsize=14) | |
ax.set_ylabel('sigmoid(y)', fontsize=14) | |
ax.set_zlabel('W', fontsize=14) | |
# Plot the surface. | |
surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm, | |
linewidth=0, antialiased=False) | |
# Customize the z axis. | |
ax.set_zlim(-1.11, 1.11) | |
ax.zaxis.set_major_locator(LinearLocator(10)) | |
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f')) | |
# Add a color bar which maps values to colors. | |
fig.colorbar(surf, shrink=0.5, aspect=5) | |
# show plot | |
plt.show() | |
# save plot in given directory | |
fig.savefig('NAC.png') |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
''' | |
NALU 3-D Plot Code | |
''' | |
# import statements | |
from mpl_toolkits.mplot3d import Axes3D | |
import matplotlib.pyplot as plt | |
from matplotlib import cm | |
from matplotlib.ticker import LinearLocator, FormatStrFormatter | |
import numpy as np | |
# 3-D axis creation | |
fig = plt.figure() | |
ax = fig.gca(projection='3d') | |
# Sub-function decleration for NALU units | |
sigmoid = lambda y: 1 / (1 + np.exp(-y)) | |
tanh = lambda x: ((np.exp(x)-np.exp(-x))/(np.exp(x)+np.exp(-x))) | |
# learned gate | |
g_x = lambda x: 1 / (1 + np.exp(-x)) | |
# small epsilon value | |
eps = 10e-2 | |
# log-exponential space | |
m_y = lambda y: np.exp(np.log(np.abs(y)+eps)) | |
# Make data | |
X = np.arange(-10, 10, 0.25) | |
Y = np.arange(-10, 10, 0.25) | |
X, Y = np.meshgrid(X, Y) | |
# Final function for Transformation Matrix W | |
W_nac = tanh(X)*sigmoid(Y) | |
# Final function for NALU | |
Z = ( (g_x(Y)*W_nac) + ((1-g_x(Y))*m_y(Y)) ) | |
# Axis Labelling | |
ax.set_xlabel('tanh(x)', fontsize=12) | |
ax.set_ylabel('sig-M/G(y), exp(log(|y|+eps))', fontsize=12) | |
ax.set_zlabel('Y', fontsize=14) | |
# Plot the surface. | |
surf = ax.plot_surface(X, Y, Z, cmap=cm.coolwarm, | |
linewidth=0, antialiased=False) | |
# Customize the z axis. | |
ax.set_zlim(-1.1, 10.1) | |
ax.zaxis.set_major_locator(LinearLocator(10)) | |
ax.zaxis.set_major_formatter(FormatStrFormatter('%.02f')) | |
# Add a color bar which maps values to colors. | |
fig.colorbar(surf, shrink=0.5, aspect=5) | |
# show plot | |
plt.show() | |
# save plot in given directory | |
fig.savefig('NALU.png') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
NAC Preview
NALU Preview