深圳南山做网站的公司,调查问卷在哪个网站做,茂名百度seo公司,网络营销培训班哪家好初始化
欢迎来到“改善深度神经网络”的第一项作业。
训练神经网络需要指定权重的初始值#xff0c;而一个好的初始化方法将有助于网络学习。
如果你完成了本系列的上一课程#xff0c;则可能已经按照我们的说明完成了权重初始化。但是#xff0c;如何为新的神经网络选择…初始化
欢迎来到“改善深度神经网络”的第一项作业。
训练神经网络需要指定权重的初始值而一个好的初始化方法将有助于网络学习。
如果你完成了本系列的上一课程则可能已经按照我们的说明完成了权重初始化。但是如何为新的神经网络选择初始化在本笔记本中你能学习看到不同的初始化导致的不同结果。
好的初始化可以
加快梯度下降、模型收敛减小梯度下降收敛过程中训练和泛化出现误差的几率
首先运行以下单元格以加载包和用于分类的二维数据集。
import numpy as np
import matplotlib.pyplot as plt
import sklearn
import sklearn.datasets
from init_utils import sigmoid, relu, compute_loss, forward_propagation, backward_propagation
from init_utils import update_parameters, predict, load_dataset, plot_decision_boundary, predict_dec%matplotlib inline
plt.rcParams[figure.figsize] (7.0, 4.0) # set default size of plots
plt.rcParams[image.interpolation] nearest
plt.rcParams[image.cmap] gray# load image dataset: blue/red dots in circles
train_X, train_Y, test_X, test_Y load_dataset() 我们希望分类器将蓝点和红点分开。
1 神经网络模型
你将使用已经实现了的3层神经网络。 下面是你将尝试的初始化方法
零初始化 在输入参数中设置initialization zeros。随机初始化 在输入参数中设置initialization random这会将权重初始化为较大的随机值。He初始化 在输入参数中设置initialization he这会根据He等人2015的论文将权重初始化为按比例缩放的随机值。
说明请快速阅读并运行以下代码在下一部分中你将实现此model()调用的三种初始化方法。
def model(X, Y, learning_rate 0.01, num_iterations 15000, print_cost True, initialization he):Implements a three-layer neural network: LINEAR-RELU-LINEAR-RELU-LINEAR-SIGMOID.Arguments:X -- input data, of shape (2, number of examples)Y -- true label vector (containing 0 for red dots; 1 for blue dots), of shape (1, number of examples)learning_rate -- learning rate for gradient descent num_iterations -- number of iterations to run gradient descentprint_cost -- if True, print the cost every 1000 iterationsinitialization -- flag to choose which initialization to use (zeros,random or he)Returns:parameters -- parameters learnt by the modelgrads {}costs [] # to keep track of the lossm X.shape[1] # number of exampleslayers_dims [X.shape[0], 10, 5, 1]# Initialize parameters dictionary.if initialization zeros:parameters initialize_parameters_zeros(layers_dims)elif initialization random:parameters initialize_parameters_random(layers_dims)elif initialization he:parameters initialize_parameters_he(layers_dims)# Loop (gradient descent)for i in range(0, num_iterations):# Forward propagation: LINEAR - RELU - LINEAR - RELU - LINEAR - SIGMOID.a3, cache forward_propagation(X, parameters)# Losscost compute_loss(a3, Y)# Backward propagation.grads backward_propagation(X, Y, cache)# Update parameters.parameters update_parameters(parameters, grads, learning_rate)# Print the loss every 1000 iterationsif print_cost and i % 1000 0:print(Cost after iteration {}: {}.format(i, cost))costs.append(cost)# plot the lossplt.plot(costs)plt.ylabel(cost)plt.xlabel(iterations (per hundreds))plt.title(Learning rate str(learning_rate))plt.show()return parameters 2 零初始化
在神经网络中有两种类型的参数要初始化
权重矩阵 偏差向量 练习实现以下函数以将所有参数初始化为零。 稍后你会看到此方法会报错因为它无法“打破对称性”。总之先尝试一下看看会发生什么。确保使用正确维度的np.zeros....。
# GRADED FUNCTION: initialize_parameters_zeros def initialize_parameters_zeros(layers_dims):Arguments:layer_dims -- python array (list) containing the size of each layer.Returns:parameters -- python dictionary containing your parameters W1, b1, ..., WL, bL:W1 -- weight matrix of shape (layers_dims[1], layers_dims[0])b1 -- bias vector of shape (layers_dims[1], 1)...WL -- weight matrix of shape (layers_dims[L], layers_dims[L-1])bL -- bias vector of shape (layers_dims[L], 1)parameters {}L len(layers_dims) # number of layers in the networkfor l in range(1, L):### START CODE HERE ### (≈ 2 lines of code)parameters[Wstr(l)]np.zeros((layers_dims[l],layers_dims[l-1]))parameters[bstr(l)]np.zeros((layers_dims[l],1))### END CODE HERE ###return parameters 运行以下代码使用零初始化并迭代15,000次以训练模型。
parameters model(train_X, train_Y, initialization zeros)
print (On the train set:)
predictions_train predict(train_X, train_Y, parameters)
print (On the test set:)
predictions_test predict(test_X, test_Y, parameters) 性能确实很差损失也没有真正降低该算法的性能甚至不如随机猜测。为什么呢让我们看一下预测的详细信息和决策边界
print (predictions_train str(predictions_train))
print (predictions_test str(predictions_test)) plt.title(Model with Zeros initialization)
axes plt.gca()
axes.set_xlim([-1.5,1.5])
axes.set_ylim([-1.5,1.5])
plot_decision_boundary(lambda x: predict_dec(parameters, x.T), train_X, train_Y) 该模型预测的每个示例都为0。
通常将所有权重初始化为零会导致网络无法打破对称性。 这意味着每一层中的每个神经元都将学习相同的东西并且你不妨训练每一层的神经网络且该网络的性能不如线性分类器例如逻辑回归。
你应该记住
权重应该随机初始化以打破对称性。将偏差初始化为零是可以的。只要随机初始化了对称性仍然会破坏。
3 随机初始化
为了打破对称性让我们随机设置权重。 在随机初始化之后每个神经元可以继续学习其输入的不同特征。 在本练习中你将看到如果将权重随机初始化为非常大的值会发生什么。
练习实现以下函数将权重初始化为较大的随机值按*10缩放并将偏差设为0。 将 np.random.randn(..,..) * 10用于权重将np.zeros((.., ..))用于偏差。我们使用固定的np.random.seed(..)以确保你的“随机”权重与我们的权重匹配。因此如果运行几次代码后参数初始值始终相同也请不要疑惑。
# GRADED FUNCTION: initialize_parameters_randomdef initialize_parameters_random(layers_dims):Arguments:layer_dims -- python array (list) containing the size of each layer.Returns:parameters -- python dictionary containing your parameters W1, b1, ..., WL, bL:W1 -- weight matrix of shape (layers_dims[1], layers_dims[0])b1 -- bias vector of shape (layers_dims[1], 1)...WL -- weight matrix of shape (layers_dims[L], layers_dims[L-1])bL -- bias vector of shape (layers_dims[L], 1)np.random.seed(3) # This seed makes sure your random numbers will be the as oursparameters {}L len(layers_dims) # integer representing the number of layersfor l in range(1, L):### START CODE HERE ### (≈ 2 lines of code)parameters[Wstr(l)]np.random.randn(layers_dims[l],layers_dims[l-1])*10parameters[bstr(l)]np.zeros((layers_dims[l],1))### END CODE HERE ###return parameters 运行以下代码使用随机初始化迭代15,000次以训练模型。
parameters model(train_X, train_Y, initialization random)
print (On the train set:)
predictions_train predict(train_X, train_Y, parameters)
print (On the test set:)
predictions_test predict(test_X, test_Y, parameters) 因为数值舍入你可能在0迭代之后看到损失为inf我们会在之后用更复杂的数字实现解决此问题。
总之看起来你的对称性已打破这会带来更好的结果。 相比之前模型不再输出全0的结果了。 plt.title(Model with large random initialization)
axes plt.gca()
axes.set_xlim([-1.5,1.5])
axes.set_ylim([-1.5,1.5])
plot_decision_boundary(lambda x: predict_dec(parameters, x.T), train_X, train_Y) 观察
损失一开始很高是因为较大的随机权重值对于某些数据最后一层激活函数sigmoid输出的结果非常接近0或1并且当该示例数据预测错误时将导致非常高的损失。当log(a[3])log(0)时损失达到无穷大。初始化不当会导致梯度消失/爆炸同时也会减慢优化算法的速度。训练较长时间的网络将会看到更好的结果但是使用太大的随机数进行初始化会降低优化速度。
总结
将权重初始化为非常大的随机值效果不佳。初始化为较小的随机值会更好。重要的问题是这些随机值应为多小让我们在下一部分中找到答案
4 He初始化
最后让我们尝试一下“He 初始化”该名称以He等人的名字命名类似于“Xavier初始化”但Xavier初始化使用比例因子 sqrt(1./layers_dims[l-1])来表示权重而He初始化使用sqrt(2./layers_dims[l-1])。
练习实现以下函数以He初始化来初始化参数。
提示此函数类似于先前的initialize_parameters_random(...)。 唯一的不同是无需将np.random.randn(..,..)乘以10而是将其乘以这是He初始化建议使用的ReLU激活层。
# GRADED FUNCTION: initialize_parameters_hedef initialize_parameters_he(layers_dims):Arguments:layer_dims -- python array (list) containing the size of each layer.Returns:parameters -- python dictionary containing your parameters W1, b1, ..., WL, bL:W1 -- weight matrix of shape (layers_dims[1], layers_dims[0])b1 -- bias vector of shape (layers_dims[1], 1)...WL -- weight matrix of shape (layers_dims[L], layers_dims[L-1])bL -- bias vector of shape (layers_dims[L], 1)np.random.seed(3)parameters {}L len(layers_dims) - 1 # integer representing the number of layersfor l in range(1, L 1):### START CODE HERE ### (≈ 2 lines of code)parameters[Wstr(l)]np.random.randn(layers_dims[l],layers_dims[l-1])*np.sqrt(2./layers_dims[l-1])parameters[bstr(l)]np.zeros((layers_dims[l],1))### END CODE HERE ###return parameters 运行以下代码使用He初始化并迭代15,000次以训练你的模型。
parameters model(train_X, train_Y, initialization he)
print (On the train set:)
predictions_train predict(train_X, train_Y, parameters)
print (On the test set:)
predictions_test predict(test_X, test_Y, parameters) plt.title(Model with He initialization)
axes plt.gca()
axes.set_xlim([-1.5,1.5])
axes.set_ylim([-1.5,1.5])
plot_decision_boundary(lambda x: predict_dec(parameters, x.T), train_X, train_Y) 观察
使用He初始化的模型可以在少量迭代中很好地分离蓝色点和红色点。
5 总结
我们已经学习了三种不同类型的初始化方法。对于相同的迭代次数和超参数三种结果比较为
Model测试准确率评价零初始化的3层NN50未能打破对称性随机初始化的3层NN83权重太大He初始化的3层NN99推荐方法
此作业中应记住的内容
不同的初始化会导致不同的结果随机初始化用于打破对称性并确保不同的隐藏单元可以学习不同的东西不要初始化为太大的值初始化对于带有ReLU激活的网络非常有效。 文章转载自: http://www.morning.smxrx.cn.gov.cn.smxrx.cn http://www.morning.drfrm.cn.gov.cn.drfrm.cn http://www.morning.blxlf.cn.gov.cn.blxlf.cn http://www.morning.vnuwdy.cn.gov.cn.vnuwdy.cn http://www.morning.mlffg.cn.gov.cn.mlffg.cn http://www.morning.krrjb.cn.gov.cn.krrjb.cn http://www.morning.pqbkk.cn.gov.cn.pqbkk.cn http://www.morning.qmsbr.cn.gov.cn.qmsbr.cn http://www.morning.plflq.cn.gov.cn.plflq.cn http://www.morning.sltfk.cn.gov.cn.sltfk.cn http://www.morning.ybgcn.cn.gov.cn.ybgcn.cn http://www.morning.yfmwg.cn.gov.cn.yfmwg.cn http://www.morning.nuobeiergw.cn.gov.cn.nuobeiergw.cn http://www.morning.lgqdl.cn.gov.cn.lgqdl.cn http://www.morning.hdqqr.cn.gov.cn.hdqqr.cn http://www.morning.tpbhf.cn.gov.cn.tpbhf.cn http://www.morning.rjynd.cn.gov.cn.rjynd.cn http://www.morning.lhygbh.com.gov.cn.lhygbh.com http://www.morning.mltsc.cn.gov.cn.mltsc.cn http://www.morning.lyzwdt.com.gov.cn.lyzwdt.com http://www.morning.sffwz.cn.gov.cn.sffwz.cn http://www.morning.bkcnq.cn.gov.cn.bkcnq.cn http://www.morning.glxdk.cn.gov.cn.glxdk.cn http://www.morning.c7627.cn.gov.cn.c7627.cn http://www.morning.fqyxb.cn.gov.cn.fqyxb.cn http://www.morning.pyxtn.cn.gov.cn.pyxtn.cn http://www.morning.rtkz.cn.gov.cn.rtkz.cn http://www.morning.nbybb.cn.gov.cn.nbybb.cn http://www.morning.sjjq.cn.gov.cn.sjjq.cn http://www.morning.ksbmx.cn.gov.cn.ksbmx.cn http://www.morning.pprxs.cn.gov.cn.pprxs.cn http://www.morning.zcnfm.cn.gov.cn.zcnfm.cn http://www.morning.czcbl.cn.gov.cn.czcbl.cn http://www.morning.hcrxn.cn.gov.cn.hcrxn.cn http://www.morning.drndl.cn.gov.cn.drndl.cn http://www.morning.hblkq.cn.gov.cn.hblkq.cn http://www.morning.bgpch.cn.gov.cn.bgpch.cn http://www.morning.ntdzjx.com.gov.cn.ntdzjx.com http://www.morning.grzpc.cn.gov.cn.grzpc.cn http://www.morning.spftz.cn.gov.cn.spftz.cn http://www.morning.fwmln.cn.gov.cn.fwmln.cn http://www.morning.rkxqh.cn.gov.cn.rkxqh.cn http://www.morning.pyncx.cn.gov.cn.pyncx.cn http://www.morning.hqsnt.cn.gov.cn.hqsnt.cn http://www.morning.nqcwz.cn.gov.cn.nqcwz.cn http://www.morning.sxmbk.cn.gov.cn.sxmbk.cn http://www.morning.yrctp.cn.gov.cn.yrctp.cn http://www.morning.wptrm.cn.gov.cn.wptrm.cn http://www.morning.nllst.cn.gov.cn.nllst.cn http://www.morning.bsqth.cn.gov.cn.bsqth.cn http://www.morning.lqznq.cn.gov.cn.lqznq.cn http://www.morning.jjtwh.cn.gov.cn.jjtwh.cn http://www.morning.tnkwj.cn.gov.cn.tnkwj.cn http://www.morning.mmxnb.cn.gov.cn.mmxnb.cn http://www.morning.kzdgz.cn.gov.cn.kzdgz.cn http://www.morning.ktsth.cn.gov.cn.ktsth.cn http://www.morning.fjmfq.cn.gov.cn.fjmfq.cn http://www.morning.xhddb.cn.gov.cn.xhddb.cn http://www.morning.wljzr.cn.gov.cn.wljzr.cn http://www.morning.lsmnn.cn.gov.cn.lsmnn.cn http://www.morning.nhzzn.cn.gov.cn.nhzzn.cn http://www.morning.lkgqb.cn.gov.cn.lkgqb.cn http://www.morning.zxcny.cn.gov.cn.zxcny.cn http://www.morning.kndst.cn.gov.cn.kndst.cn http://www.morning.rzbgn.cn.gov.cn.rzbgn.cn http://www.morning.tnbas.com.gov.cn.tnbas.com http://www.morning.gfmpk.cn.gov.cn.gfmpk.cn http://www.morning.cqrenli.com.gov.cn.cqrenli.com http://www.morning.qynpw.cn.gov.cn.qynpw.cn http://www.morning.zxfr.cn.gov.cn.zxfr.cn http://www.morning.rtlg.cn.gov.cn.rtlg.cn http://www.morning.wpjst.cn.gov.cn.wpjst.cn http://www.morning.pdmml.cn.gov.cn.pdmml.cn http://www.morning.lsmgl.cn.gov.cn.lsmgl.cn http://www.morning.sfwfk.cn.gov.cn.sfwfk.cn http://www.morning.mghgl.cn.gov.cn.mghgl.cn http://www.morning.bkgfp.cn.gov.cn.bkgfp.cn http://www.morning.gkktj.cn.gov.cn.gkktj.cn http://www.morning.bbrf.cn.gov.cn.bbrf.cn http://www.morning.snzgg.cn.gov.cn.snzgg.cn