小编Agr*_*ppa的帖子

Keras:如何查看初始权重(即培训前)

我正在使用Keras生成一个简单的单层前馈网络.我想通过kernel_initializer参数初始化权重时更好地处理权重值.有没有办法可以在初始化之后(即在训练完成之前)查看权重值.

如果您需要更多信息,请告诉我.干杯

编辑1:也许我应该解释为什么我想要看到初始化的权重.在Keras,我对随机正交矩阵的实际外观感到有些困惑.如果我可以打印这些值,它将有助于我更好地理解这个功能.

编辑2:在创建模型之后但在适合之前使用get_weights不起作用.无论kernel_initializer使用何种情况,返回的权重始终为零.

编辑3:我在编辑2中所说的不正确.请参阅选定的答案以获得澄清.

python kernel keras

9
推荐指数
1
解决办法
8254
查看次数

Keras:解释get_weights()的输出

在Keras中运行神经网络时,我似乎找不到太多有关如何解释get_weights()输出的文档。据我了解,输出取决于网络的结构。因此,我在下面粘贴了网络结构的简化版本:

model.add(Dense(5, input_dim=2, activation = linear, use_bias=True, kernel_initializer=Orthogonal))
model.add(Dense(1, use_bias=True))
model.compile(loss='mae', optimizer='adam')
Run Code Online (Sandbox Code Playgroud)

训练后的get_weights()输出为:

     [array([[ 0.79376745,  0.79879117,  1.22406125,  1.07782006,  1.24107373],
           [ 0.88034034,  0.88281095,  1.13124955,  0.98677355,  1.14481246]], dtype=float32), 
      array([-0.09109745, -0.09036621,  0.0977743 , -0.07977977,  0.10829113], dtype=float32), 
      array([[-0.72631335],
           [-0.38004425],
           [ 0.62861812],
           [ 0.10909595],
           [ 0.30652359]], dtype=float32), 
      array([ 0.09278722], dtype=float32)]
Run Code Online (Sandbox Code Playgroud)

共有四个数组。每个代表什么?谢谢!

keras

8
推荐指数
1
解决办法
5174
查看次数

Keras:最佳纪元选择

我正在尝试编写一些逻辑来选择在 Keras 中运行神经网络的最佳纪元。我的代码保存一定数量的历元的训练损失和测试损失,然后根据某种逻辑选择最合适的历元。代码如下所示:

ini_epochs = 100

df_train_loss = DataFrame(data=history.history['loss'], columns=['Train_loss']); 
df_test_loss = DataFrame(data=history.history['val_loss'], columns=['Test_loss']);
df_loss = concat([df_train_loss,df_test_loss], axis=1)

Min_loss = max(df_loss['Test_loss'])
for i in range(ini_epochs):
    Test_loss = df_loss['Test_loss'][i];
    Train_loss = df_loss['Train_loss'][i]; 
    if Test_loss >  Train_loss and Test_loss < Min_loss:
        Min_loss = Test_loss;
Run Code Online (Sandbox Code Playgroud)

逻辑背后的想法是这样的;为了得到最好的模型,选择的epoch应该选择损失值最低的模型,但它必须高于训练损失值以避免过拟合。

总体来说,这种epoch选择方法是可以工作的。但是,如果测试损失值从一开始就低于训练损失,则此方法会选择零纪元(见下文)。 在此输入图像描述

现在我可以添加另一个if语句来评估测试和训练损失之间的差异是正还是负,然后为每种情况编写逻辑,但是如果差异开始为正,然后最终为负,会发生什么。我很困惑,无法编写有效的代码。

所以,我的问题是:

1)您能否向我展示您将编写哪些代码来解释图中显示的情况(以及测试和训练损失曲线交叉的情况)。我想说的策略是采用差异最小的值。

2)我很可能以错误的方式处理这件事。我知道 Keras 有回调功能,但我不喜欢使用该save_best_only功能的想法,因为它可以保存过度拟合的模型。任何关于更有效的纪元选择方法的建议都会很棒。

python callback neural-network keras

6
推荐指数
1
解决办法
9632
查看次数

标签 统计

keras ×3

python ×2

callback ×1

kernel ×1

neural-network ×1