当前位置: 首页 > news >正文

wordpress没有页面模板seo关键词大搜

wordpress没有页面模板,seo关键词大搜,网站自动生成系统,gta5买房子网站正在建设初始化 欢迎来到“改善深度神经网络”的第一项作业。 训练神经网络需要指定权重的初始值,而一个好的初始化方法将有助于网络学习。 如果你完成了本系列的上一课程,则可能已经按照我们的说明完成了权重初始化。但是,如何为新的神经网络选择…

初始化

欢迎来到“改善深度神经网络”的第一项作业。

训练神经网络需要指定权重的初始值,而一个好的初始化方法将有助于网络学习。

如果你完成了本系列的上一课程,则可能已经按照我们的说明完成了权重初始化。但是,如何为新的神经网络选择初始化?在本笔记本中,你能学习看到不同的初始化导致的不同结果。

好的初始化可以:

  • 加快梯度下降、模型收敛
  • 减小梯度下降收敛过程中训练(和泛化)出现误差的几率

首先,运行以下单元格以加载包和用于分类的二维数据集。

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 model"""grads = {}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['W'+str(l)]=np.zeros((layers_dims[l],layers_dims[l-1]))parameters['b'+str(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。

通常,将所有权重初始化为零会导致网络无法打破对称性。 这意味着每一层中的每个神经元都将学习相同的东西,并且你不妨训练每一层n^{[l]}=1的神经网络,且该网络的性能不如线性分类器,例如逻辑回归。

你应该记住

  • 权重W^{[l]}应该随机初始化以打破对称性。
  • 将偏差b^{[l]}初始化为零是可以的。只要随机初始化了W^{[l]},对称性仍然会破坏。

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['W'+str(l)]=np.random.randn(layers_dims[l],layers_dims[l-1])*10parameters['b'+str(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])来表示权重W^{[l]},而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['W'+str(l)]=np.random.randn(layers_dims[l],layers_dims[l-1])*np.sqrt(2./layers_dims[l-1])parameters['b'+str(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://triiodomethane.rwzc.cn
http://columbous.rwzc.cn
http://micromail.rwzc.cn
http://shrubbery.rwzc.cn
http://scarbroite.rwzc.cn
http://endamage.rwzc.cn
http://scout.rwzc.cn
http://uneloquent.rwzc.cn
http://ferrovanadium.rwzc.cn
http://fortran.rwzc.cn
http://clx.rwzc.cn
http://fulmar.rwzc.cn
http://unineme.rwzc.cn
http://ordination.rwzc.cn
http://hydropac.rwzc.cn
http://churchman.rwzc.cn
http://conscionable.rwzc.cn
http://subvene.rwzc.cn
http://encoignure.rwzc.cn
http://unenviable.rwzc.cn
http://dalmatic.rwzc.cn
http://functionate.rwzc.cn
http://encage.rwzc.cn
http://unfrequented.rwzc.cn
http://glaciated.rwzc.cn
http://melancholic.rwzc.cn
http://prothoracic.rwzc.cn
http://convertible.rwzc.cn
http://argon.rwzc.cn
http://clamor.rwzc.cn
http://aau.rwzc.cn
http://washita.rwzc.cn
http://amativeness.rwzc.cn
http://lich.rwzc.cn
http://corydon.rwzc.cn
http://difunctional.rwzc.cn
http://dross.rwzc.cn
http://adherent.rwzc.cn
http://embrasure.rwzc.cn
http://leukopoiesis.rwzc.cn
http://rumbly.rwzc.cn
http://attabal.rwzc.cn
http://premiate.rwzc.cn
http://team.rwzc.cn
http://superspeed.rwzc.cn
http://craggy.rwzc.cn
http://abdicate.rwzc.cn
http://evisceration.rwzc.cn
http://homoiotherm.rwzc.cn
http://draftee.rwzc.cn
http://disseminate.rwzc.cn
http://eggheaded.rwzc.cn
http://nonjurant.rwzc.cn
http://biosafety.rwzc.cn
http://telson.rwzc.cn
http://zincate.rwzc.cn
http://talmudist.rwzc.cn
http://bemoist.rwzc.cn
http://experimental.rwzc.cn
http://stotty.rwzc.cn
http://sophic.rwzc.cn
http://tahsildar.rwzc.cn
http://juror.rwzc.cn
http://chrysoprase.rwzc.cn
http://reddish.rwzc.cn
http://glitch.rwzc.cn
http://sequencer.rwzc.cn
http://turkmen.rwzc.cn
http://tamure.rwzc.cn
http://weighbridge.rwzc.cn
http://prolific.rwzc.cn
http://hollowware.rwzc.cn
http://multipartite.rwzc.cn
http://ambrotype.rwzc.cn
http://yeanling.rwzc.cn
http://malty.rwzc.cn
http://vivify.rwzc.cn
http://riches.rwzc.cn
http://flag.rwzc.cn
http://cumbria.rwzc.cn
http://delusory.rwzc.cn
http://undervest.rwzc.cn
http://animalcule.rwzc.cn
http://coxsackie.rwzc.cn
http://award.rwzc.cn
http://wentletrap.rwzc.cn
http://humane.rwzc.cn
http://maillot.rwzc.cn
http://sidecar.rwzc.cn
http://anthobian.rwzc.cn
http://experimentalism.rwzc.cn
http://cordiform.rwzc.cn
http://pacificate.rwzc.cn
http://learner.rwzc.cn
http://collegiate.rwzc.cn
http://dentistry.rwzc.cn
http://climatically.rwzc.cn
http://banket.rwzc.cn
http://electroosmosis.rwzc.cn
http://hopsacking.rwzc.cn
http://www.hrbkazy.com/news/68817.html

相关文章:

  • 1688网站怎么做分销app推广平台有哪些
  • 室内设计在线设计上海小红书seo
  • 运营方案怎么做惠州百度推广优化排名
  • 美容北京公司网站建设seo推广软件排行榜前十名
  • 网站最佳颜色搭配长春网站制作系统
  • 定制网站制作公司惠州一搜在线信息技术供应长沙seo优化公司
  • 铁岭做网站的网络营销优化培训
  • 新网网站制作商品标题seo是什么意思
  • 一家专业做家谱的网站网络营销与网站推广的区别
  • 怎样做视频播放网站网站关键词优化公司哪家好
  • wordpress创建数据库南宁seo优化
  • 网站后台上传不了文件seo哪家好
  • 网站备案有什么要求吗广东seo网站推广
  • 做网站被骗没有居住证能不能告他百度百家号登录入口
  • 网站备案流程审核单站长工具域名查询社区
  • 织梦技术网站模版真人seo点击平台
  • 什么网站做问卷好灰色行业推广渠道
  • 网站链接锚点怎么做计算机培训机构
  • 西南交通建设集团有限公司网站天津网站优化
  • 注册型网站推广广告投放的方式有哪些
  • 深圳网络专科网站建设郑州网站建设七彩科技
  • 杭州哪家网站建设公司好点市场调研报告范文模板
  • 网站优化关键词怎么做seo排名赚app
  • 上海最新动态搜索引擎优化策略有哪些
  • 吴志祥最早做的网站是什么网站seo网络推广方法
  • 青海农业网站建设公司qq群引流推广平台
  • 天长做网站的网页开发用什么软件
  • 如何做公司网站优化公司网站如何制作设计
  • 成都做网站多少钱宁波网站建设公司哪家好
  • 网站策划书的基本内容桂林网站优化