我在keras (python)中使用默认设置和仅仅一个时代来训练一个顺序模型(20个密集层)。所有的层都用relu激活,除了最后一层使用乙状结肠。
方法A:
1,000,000个有标记训练数据记录的饲料模型。
方法B:
为什么上述两种方法之间存在差异?
与分组使用数据相比,我每次使用所有数据都能获得更好的准确性。
原因是什么?
model = Sequential()
model.add(Dense(30, input_dim = 27, activation = 'relu'))
...
model.add(Dense(1, input_dim = 10, activation = 'sigmoid'))
model.compile(loss = 'binary_crossentropy', optimizer = 'sgd', metrics = ['accuracy'])
model.load_weights(PreviousWeightsFile)
model.fit(X, Y, verbose = 0)
model.save_weights(WeightsFile)
(exit python and do some stuff)
发布于 2019-07-31 12:26:05
从文档来看,这里是您问题的关键模型参数。
initial_epoch:整数。开始训练的时代(对恢复以前的训练很有用)。
和
时代:整数。训练模型的历元数。一个时代是对所提供的整个x和y数据的迭代。请注意,结合initial_epoch,时代被理解为“最后的时代”。该模型不是针对历元给出的多次迭代训练的,而只是在达到索引历元的历次时才训练的。
您没有使用这些参数,因此您正在覆盖您的权重,并且不会像使用epochs
参数那样恢复训练。这就是为什么您的模型在方法B中的表现总是更差的原因。
发布于 2019-07-31 12:27:13
有了所有数据,特征之间的交互以及由此产生的反向传播将更准确地处理所有现有数据;这使得模型的特性和体系结构能够建立在其他时代的基础上。
当您保存和重新加载时,基本上重新启动它。
https://stackoverflow.com/questions/57298236
复制