为了账号安全,请及时绑定邮箱和手机立即绑定

循环 model.fit 时无法重置模型

循环 model.fit 时无法重置模型

不负相思意 2024-01-16 15:04:19
使用 Keras,我尝试使用不同的数据分割循环训练会话 10 次。不过,在每个循环之后,我的准确性会提高很多,可能是因为它不会重置并在新组中看到新数据(训练的数据可能会出现在测试下一个循环中)我预计 model.fit 会重置它,如公关所示。这里的答案说它是这样的,但我无法做到。然后我在循环开始时尝试了 K.clear_session() ,如 pr 所示。示例 1 在这里,但它什么也没做。我可以第一次保存未经训练的模型并在循环开始时重新加载它,但这似乎是一个不好的方法/不好的做法。我能做什么/我做错了吗?from tensorflow.keras import backend as Kfor 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))
查看完整描述

1 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

最简单的方法是在循环内定义模型。这是一个例子。您会看到每次迭代,准确性都会随机开始,然后才会提高。


import tensorflow as tf


(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()


x_train = x_train.astype("float32") / 255

x_test = x_test.astype("float32") / 255


for i in range(5):

    model = tf.keras.Sequential([

            tf.keras.Input(shape=(28, 28)),

            tf.keras.layers.Flatten(),

            tf.keras.layers.Dense(32, activation='relu'),

            tf.keras.layers.Dense(64, activation='relu'),

            tf.keras.layers.Dense(10, activation="softmax"),

        ])

    model.compile(loss="sparse_categorical_crossentropy", optimizer="adam",

                  metrics=["accuracy"])

    model.fit(x_train, y_train, batch_size=16, epochs=1, validation_split=0.1)

手动重置权重稍微复杂一些。



查看完整回答
反对 回复 2024-01-16
  • 1 回答
  • 0 关注
  • 27 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信