Path: blob/main/C2 - Advanced Learning Algorithms/week2/C2W2A1/lab_utils_softmax.py
3520 views
import numpy as np1import matplotlib.pyplot as plt2plt.style.use('./deeplearning.mplstyle')3import tensorflow as tf4from IPython.display import display, Markdown, Latex5from matplotlib.widgets import Slider6from lab_utils_common import dlc789def plt_softmax(my_softmax):10fig, ax = plt.subplots(1,2,figsize=(8,4))11plt.subplots_adjust(bottom=0.35)1213axz0 = fig.add_axes([0.15, 0.10, 0.30, 0.03]) # [left, bottom, width, height]14axz1 = fig.add_axes([0.15, 0.15, 0.30, 0.03])15axz2 = fig.add_axes([0.15, 0.20, 0.30, 0.03])16axz3 = fig.add_axes([0.15, 0.25, 0.30, 0.03])1718z3 = Slider(axz3, 'z3', 0.1, 10.0, valinit=4, valstep=0.1)19z2 = Slider(axz2, 'z2', 0.1, 10.0, valinit=3, valstep=0.1)20z1 = Slider(axz1, 'z1', 0.1, 10.0, valinit=2, valstep=0.1)21z0 = Slider(axz0, 'z0', 0.1, 10.0, valinit=1, valstep=0.1)2223z = np.array(['z0','z1','z2','z3'])24bar = ax[0].barh(z, height=0.6, width=[z0.val,z1.val,z2.val,z3.val], left=None, align='center')25bars = bar.get_children()26ax[0].set_xlim([0,10])27ax[0].set_title("z input to softmax")2829a = my_softmax(np.array([z0.val,z1.val,z2.val,z3.val]))30anames = np.array(['a0','a1','a2','a3'])31sbar = ax[1].barh(anames, height=0.6, width=a, left=None, align='center',color=dlc["dldarkred"])32sbars = sbar.get_children()33ax[1].set_xlim([0,1])34ax[1].set_title("softmax(z)")3536def update(val):37bars[0].set_width(z0.val)38bars[1].set_width(z1.val)39bars[2].set_width(z2.val)40bars[3].set_width(z3.val)41a = my_softmax(np.array([z0.val,z1.val,z2.val,z3.val]))42sbars[0].set_width(a[0])43sbars[1].set_width(a[1])44sbars[2].set_width(a[2])45sbars[3].set_width(a[3])4647fig.canvas.draw_idle()4849z0.on_changed(update)50z1.on_changed(update)51z2.on_changed(update)52z3.on_changed(update)5354plt.show()555657