【问题标题】:Tensorflow 2.3 problems with saving and loading modelTensorflow 2.3 保存和加载模型的问题
【发布时间】:2021-08-04 05:58:14
【问题描述】:

所以昨天我用model.save('path')保存模型后,今天才发现tf 2.3和keras保存模型有问题。该问题已在此处描述:Keras giving low accuracy after loading model。 但是接受的解决方案对我没有帮助。当我使用model = tf.keras.models.load_model('path') 加载模型时,它返回的测试准确度比保存之前要低。使用

model.compile(optimizer = SGD(lr = 1e-3, momentum = 0.9, decay = 1e-6), #RMSProp
             loss = 'binary_crossentropy',
             metrics = ['sparse_categorical_accuracy'])

没有帮助,因为在保存模型之前,我使用了“准确度”而不是“稀疏分类准确度”,现在在尝试训练或测试模型时出现以下错误:

InvalidArgumentError:  Can not squeeze dim[1], expected a dimension of 1, got 2
     [[node Squeeze (defined at <ipython-input-34-11b07af8f987>:4) ]] [Op:__inference_test_function_363481]

Function call stack:
test_function

所以现在我的问题是:有什么方法可以加载我保存的模型并获取保存的状态,还是我需要再次从零开始训练?

【问题讨论】:

    标签: python tensorflow keras neural-network


    【解决方案1】:

    当您在训练期间使用 metrics = ["accuracy"] 时,TensorFlow 会自动为您的损失函数获取正确的准确度。
    "sparse_categorical_crossentropy" 的准确度指标是 "sparse_categorical_accuracy"。在您的情况下,"binary_crossentropy" 的准确度指标是 "binary_accuracy"

    在此处查看所有指标:https://www.tensorflow.org/api_docs/python/tf/keras/metrics/

    始终按照数据所需的精度编译模型。

    model.compile(optimizer = SGD(lr = 1e-3, momentum = 0.9, decay = 1e-6),
                 loss = 'binary_crossentropy',
                 metrics = ['binary_accuracy'])
    

    【讨论】:

    • 有道理,谢谢,遗憾的是它没有解决我的问题,我仍然没有得到正确的准确性:(
    【解决方案2】:

    虽然听起来很简单,但您是否在加载模型后检查了输入数据?它的预处理方式是否与训练期间完全相同?

    最常见:规范化和预取

    如您所述,使用非标准化数据测试加载的模型(在接受标准化训练之后)将导致性能不佳。

    根据我的经验,即使使用 CustomMaskWarning,以下内容也有效。

    # Saving
    model.save(path)
    # Loading
    model = tf.keras.models.load_model(path)
    
    # for only saving weights
    model.save_weights(path)
    # loading weights
    model = create_model()  # create exactly the same model as trained
    model.load_weights(path)
    

    (如果您有 CustomMaskWarning 并且没有通过覆盖 get_config 和设置配置来解决问题,“.h5”格式会导致问题。)

    【讨论】:

      猜你喜欢
      • 2021-03-08
      • 1970-01-01
      • 1970-01-01
      • 2019-04-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      相关资源
      最近更新 更多