tensorflow如何初始化我的神经网络中的权重值



我发现默认情况下keras使用Glorot/Xavier来初始化权重,这意味着这些值将在+-(sqrt(6/float(F_in+F_out((之间

但在我的情况下,我使用以下架构,其中ishape=(None,4(:我不使用固定的输入大小。(我的输入数据是一个热编码的DNA序列(

model = keras.Sequential()
model.add(Conv1D(filternumber, b, activation='relu', input_shape=ishape))
model.add(MaxPooling1D(pool_size=a))
model.add(GlobalAvgPool1D(data_format="channels_last"))
model.add(Dense(32, activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(1, activation='sigmoid'))

考虑到keras不知道输入大小,它如何初始化权重?在我的情况下,初始化权重的最佳方法是什么?

感谢

您的模型"知道";在本例中,您的输入大小为4(None, 4)中的None指的是可变数量的矢量,即批量大小,但输入矢量大小和层是驱动序列模型从输入到输出的形状的因素。

你可以在这个Sequential模型的开发者指南中看到,即使根本没有指定形状,模型也不会初始化任何权重,直到它第一次推断输入数据将修复输入形状。该模型将根据现在已知的形状构建其权重。

任何需要输入和输出特征大小知识的权重初始化器都可以在这两种情况下工作。

我对权重初始化技术的选择没有太多建议,我认为权重初始化是一个需要调整的超参数。

最新更新