【问题标题】:What to look for when initial loss is high in Neural network training?当神经网络训练的初始损失很高时要寻找什么?
【发布时间】:2020-10-26 00:15:43
【问题描述】:

我正在尝试使用 conv3d 训练我的神经网络进行图像分类。在训练时,我看到初始损失超过 2。所以我想知道我可以做些什么来减少这个初始损失?

这是我的模型代码:

model = Sequential()
model.add(Conv3D(2, (3,3,3), padding = 'same', input_shape= [num_of_frame, 
          img_rows,img_cols, img_channels] ))
model.add(Activation('relu'))
model.add(Conv3D(64, (3,3,3)))
model.add(Activation('relu'))
model.add(MaxPooling3D(pool_size=(2, 2, 2)))
model.add(Dropout(0.25))

model.add(Flatten())
model.add(Dense(32))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(nb_classes))
model.add(Activation('softmax'))

我使用 30 作为批量大小,图像尺寸为 120*90,使用 adam 优化器。

【问题讨论】:

  • 初始损失值高没有错。

标签: python neural-network conv-neural-network


【解决方案1】:

您的模型的第一层很难检测基本特征,因为您在第一层只有 2 个卷积核,这不是一个好主意。同样使用 0.25 作为 dropout rate 也不是很常见。(更常用的是 0.5 和 0.7 之间的值。)

【讨论】:

    【解决方案2】:

    第一次迭代中损失非常高的主要原因是权重和偏差初始化。每次前向传递后都会计算损失,前向传递是输入、权重、偏差和非线性的函数。

    因为,您的网络中唯一的非线性是在输出层。我怀疑这是由于权重和偏差初始化造成的。

    【讨论】:

      猜你喜欢
      • 2021-12-12
      • 2020-10-17
      • 1970-01-01
      • 2016-07-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多