使用 Keras,我尝试使用不同的数据分割循环训练会话 10 次。不过,在每个循环之后,我的准确性会提高很多,可能是因为它不会重置并在新组中看到新数据(训练的数据可能会出现在测试下一个循环中)
我预计 model.fit 会重置它,如公关所示。这里的答案说它是这样的,但我无法做到。然后我在循环开始时尝试了 K.clear_session() ,如 pr 所示。示例 1 在这里,但它什么也没做。我可以第一次保存未经训练的模型并在循环开始时重新加载它,但这似乎是一个不好的方法/不好的做法。我能做什么/我做错了吗?
from tensorflow.keras import backend as K
for i in range(0, 10):
print("Starting loop " + str(i))
K.clear_session()
model = keras.Model(inputs=inputs, outputs=outputs, name="SchoolProject")
model.compile(loss=tensorflow.keras.losses.binary_crossentropy, optimizer=tensorflow.keras.optimizers.Adam(lr=hpInitialLearningRate), metrics=['accuracy'])
trainData, valData, testData, trainTruth, valTruth, testTruth = getTrainValAndTestSet()
model.fit(trainData, trainTruth, epochs=hpEpochs, verbose=1, callbacks=callbacks_list, validation_data=(valData, valTruth))
score = model.evaluate(testData, testTruth, verbose=1)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
testAccList.append(score[1])
print("Ending loop " + str(i))
波斯汪
相关分类