Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何设置和跟踪重量衰减?_Python_Tensorflow_Keras_Deep Learning - Fatal编程技术网

Python 如何设置和跟踪重量衰减?

Python 如何设置和跟踪重量衰减?,python,tensorflow,keras,deep-learning,Python,Tensorflow,Keras,Deep Learning,设置体重衰减的指导原则是什么,例如l2惩罚-主要是,我如何跟踪它在整个训练过程中是否起作用?i、 e.与无二级惩罚相比,权重是否确实在衰减,以及衰减的幅度有多大。一种常见的方法是尝试一系列值,看看效果如何-但其陷阱是缺乏正交性;l2=2e-4可能在网络X中工作得最好,但在网络Y中工作得不好。解决方法是以子网络的方式引导权重衰减:1组层,例如分别设置Conv1D堆栈和LSTM,2组设置目标权重范数,3个轨道 1:见;相同的参数和建议的权重值不适用于CONV,因此需要不同的分组 2:一个合理的选项是

设置体重衰减的指导原则是什么,例如l2惩罚-主要是,我如何跟踪它在整个训练过程中是否起作用?i、 e.与无二级惩罚相比,权重是否确实在衰减,以及衰减的幅度有多大。

一种常见的方法是尝试一系列值,看看效果如何-但其陷阱是缺乏正交性;l2=2e-4可能在网络X中工作得最好,但在网络Y中工作得不好。解决方法是以子网络的方式引导权重衰减:1组层,例如分别设置Conv1D堆栈和LSTM,2组设置目标权重范数,3个轨道

1:见;相同的参数和建议的权重值不适用于CONV,因此需要不同的分组

2:一个合理的选项是被正则化的权重矩阵的l2范数;然后是关于哪个轴的问题。面向特征提取的方法是选择Keras中最后一个通道轴,生成长度=通道/特征数量的向量,以便每个元素都是通道的l2范数

3:l2范数向量可以迭代地添加到列表中,也可以将它们的平均值/最大值作为更简短的聚合统计-然后在训练结束时绘制

下面是一个完整的例子;键函数在底部给出,取自。我还建议改善体重衰减

解释:

wd=2e-3衰变输出层强于2e-4,但不衰变输入层,表明与瓶颈层存在平衡相互作用。 wd=2e-3与2e-4相比,产生的重量标准方差较小 输出conv层的规范即使在2e-3的情况下也会增长,这表明输出的梯度更大 通过添加BatchNormalization来探索行为是很有趣的 代码与解释;已完成以下工作:

列车与轨道进度

制作虚拟模型和数据,选择n_批次和wd l2惩罚 设置列车环路,选择n_时段 创建l2_统计记录以跟踪进度 在每次训练迭代中,计算权重\u范数并附加到l2\u统计数据 预处理用于打印的进度数据

获取重量衰减重量的名称;在省略_名称中包括未衰减 l2_统计便于附加,但必须转换为适当DIM的np.ndarray;解包,以便.shape==n个时代,n个层,n个权重,n个批次->n个行,n个列,每个子批次的历史。请注意,这要求每个层跟踪的权重矩阵数量相同 密谋

显式设置xlims和ylim,以便在不同wd值之间进行偶数比较 默认情况下会计算两个统计信息:np.mean橙色和np.max。后者也是Keras处理最大范数权重正则化的方式。 将numpy作为np导入 导入tensorflow作为tf 随机输入 np.random.seed1 随机种子2 tf.compat.v1.set\u random\u seed3 从keras.layers导入输入,Conv1D 从keras.models导入模型 从keras.regularizers导入l2 请参见导入权重标准、特征历史v2 模型与数据函数 def制作_模型批次_形状,层_kw={}: Conv1D自动编码器 尺寸=批次形状[-1] bdim=dim//2 ipt=输入批次形状=批次形状 x=Conv1Ddim,8,激活='relu',**层 x=Conv1Dbdim,1,激活='relu',**层\u kwx瓶颈 out=Conv1Ddim,8,激活='linear',**层 model=Modelipt,out 模型。编译'adam','mse' 回归模型 def make_databatch_形状,n_批次: X=Y=np.random.randnn\u批次,*批次形状 返回X,Y 列车设置 批次形状=32、100、64 n_时代=5 n_批次=200 wd=2e-3 层\u kw=dictpadding='same',内核\u正则化器=l2wd 模型=制作模型批次形状,层 十、 Y=制作数据批次形状,n个批次 火车 l2_stats={} 对于Range_时代中的时代: l2_统计[历元]={} 对于px,y中的i,x,y: 批次X、y上的第列车型 printend='。' verbose=booli==lenX-1如果是最后一个历元,则打印最后一个结果 如果冗长: 打印 l2_统计数据[历元]=权重[1,3],l2_统计数据[历元], 省略_names='bias',verbose=verbose 打印历元,历元+1,已完成 打印 预处理函数 def_获取_权重_名称模型、图层_名称、省略_名称: 权重_名称=[] 对于图层名称中的名称: 图层=模型。获取\图层名称=名称 对于层中的w.weights: 如果在w.name中没有任何to_省略,则表示在省略名称中省略: 重量名称。附录W。名称 返回重量单位名称 def_merge_layers_和_weightsl2_统计信息: 统计数据合并=[] 对于l2_stats.values中的统计信息: x=np.arrayliststats.values图层、权重、统计信息、批次 x=x.Reforme-1,*x.shape[2:]层权重、统计数据、批次 stats_.appendx 返回统计信息\u合并的年代、层权重、统计信息、批次 绘图设置 ylim=5 xlims=.4,1.2 省略_名称='bias' suptitle=wd={.0e}.formatwd.replace'0', 侧面不=EP configs={'side_annot':dictxy=.9、.9} 图层名称=listl2\u统计信息[0]。关键字 权重\u名称=\u获取\u我们 右名称模型、图层名称、省略名称 stats\u merged=\u merge\u layers\u和\u weightsl2\u stats 情节 功能\u历史\u v2stats\u合并,colnames=weight\u name,title=suptitle, xlims=xlims,ylim=ylim,side_annot=side_annot, pad_xticks=True,configs=configs
一种常见的方法是尝试一系列的价值观,看看什么是有效的——但它的陷阱是缺乏正交性;l2=2e-4可能在网络X中工作得最好,但在网络Y中工作得不好。解决方法是以子网络的方式引导权重衰减:1组层,例如分别设置Conv1D堆栈和LSTM,2组设置目标权重范数,3个轨道

1:见;相同的参数和建议的权重值不适用于CONV,因此需要不同的分组

2:一个合理的选项是被正则化的权重矩阵的l2范数;然后是关于哪个轴的问题。面向特征提取的方法是选择Keras中最后一个通道轴,生成长度=通道/特征数量的向量,以便每个元素都是通道的l2范数

3:l2范数向量可以迭代地添加到列表中,也可以将它们的平均值/最大值作为更简短的聚合统计-然后在训练结束时绘制

下面是一个完整的例子;键函数在底部给出,取自。我还建议改善体重衰减

解释:

wd=2e-3衰变输出层强于2e-4,但不衰变输入层,表明与瓶颈层存在平衡相互作用。 wd=2e-3与2e-4相比,产生的重量标准方差较小 输出conv层的规范即使在2e-3的情况下也会增长,这表明输出的梯度更大 通过添加BatchNormalization来探索行为是很有趣的 代码与解释;已完成以下工作:

列车与轨道进度

制作虚拟模型和数据,选择n_批次和wd l2惩罚 设置列车环路,选择n_时段 创建l2_统计记录以跟踪进度 在每次训练迭代中,计算权重\u范数并附加到l2\u统计数据 预处理用于打印的进度数据

获取重量衰减重量的名称;在省略_名称中包括未衰减 l2_统计便于附加,但必须转换为适当DIM的np.ndarray;解包,以便.shape==n个时代,n个层,n个权重,n个批次->n个行,n个列,每个子批次的历史。请注意,这要求每个层跟踪的权重矩阵数量相同 密谋

显式设置xlims和ylim,以便在不同wd值之间进行偶数比较 默认情况下会计算两个统计信息:np.mean橙色和np.max。后者也是Keras处理最大范数权重正则化的方式。 将numpy作为np导入 导入tensorflow作为tf 随机输入 np.random.seed1 随机种子2 tf.compat.v1.set\u random\u seed3 从keras.layers导入输入,Conv1D 从keras.models导入模型 从keras.regularizers导入l2 请参见导入权重标准、特征历史v2 模型与数据函数 def制作_模型批次_形状,层_kw={}: Conv1D自动编码器 尺寸=批次形状[-1] bdim=dim//2 ipt=输入批次形状=批次形状 x=Conv1Ddim,8,激活='relu',**层 x=Conv1Dbdim,1,激活='relu',**层\u kwx瓶颈 out=Conv1Ddim,8,激活='linear',**层 model=Modelipt,out 模型。编译'adam','mse' 回归模型 def make_databatch_形状,n_批次: X=Y=np.random.randnn\u批次,*批次形状 返回X,Y 列车设置 批次形状=32、100、64 n_时代=5 n_批次=200 wd=2e-3 层\u kw=dictpadding='same',内核\u正则化器=l2wd 模型=制作模型批次形状,层 十、 Y=制作数据批次形状,n个批次 火车 l2_stats={} 对于Range_时代中的时代: l2_统计[历元]={} 对于px,y中的i,x,y: 批次X、y上的第列车型 printend='。' verbose=booli==lenX-1如果是最后一个历元,则打印最后一个结果 如果冗长: 打印 l2_统计数据[历元]=权重[1,3],l2_统计数据[历元], 省略_names='bias',verbose=verbose 打印历元,历元+1,已完成 打印 预处理函数 def_获取_权重_名称模型、图层_名称、省略_名称: 权重_名称=[] 对于图层名称中的名称: 图层=模型。获取\图层名称=名称 对于层中的w.weights: 如果在w.name中没有任何to_省略,则表示在省略名称中省略: 重量名称。附录W。名称 返回重量单位名称 def_merge_layers_和_weightsl2_统计信息: 统计数据合并=[] 对于l2_stats.values中的统计信息: x=np.arrayliststats.values图层、权重、统计信息、批次 x=x.Reforme-1,*x.shape[2:]层权重、统计数据、批次 stats_.appendx 返回统计信息\u合并的年代、层权重、统计信息、批次 绘图设置 ylim=5 xlims=.4,1.2 省略_名称='bias' suptitle=wd={.0e}.formatwd.replace'0', 侧面不=EP configs={'side_annot':dictxy=.9、.9} 图层名称=listl2\u统计信息[0]。关键字 伟哥 ht\U名称=\u获取\u权重\u名称模型、层\u名称、省略\u名称 stats\u merged=\u merge\u layers\u和\u weightsl2\u stats 情节 功能\u历史\u v2stats\u合并,colnames=weight\u name,title=suptitle, xlims=xlims,ylim=ylim,side_annot=side_annot, pad_xticks=True,configs=configs