Python model.save()在Keras中实际保存了什么?

Python model.save()在Keras中实际保存了什么?,python,keras,deep-learning,Python,Keras,Deep Learning,我有一个Keras模型,我用100个时代训练了这个模型 现在,我在第85纪元时损失了0.0085,在后一纪元时损失了0.0092 我的问题是, Keras中的model.save()保存了什么 是否保存从lat epoch(即100)获得的权重 或者它保存了来自最佳纪元(即纪元85)的权重 或者所有100个时代的平均或平均重量 keras model.save()设计用于在完成100个历元后保存权重的是什么 感谢您提前解释:)。模型.save()保存整个体系结构、权重和优化器状态。此命令保存重建

我有一个Keras模型,我用100个时代训练了这个模型

现在,我在第85纪元时损失了0.0085,在后一纪元时损失了0.0092

我的问题是,

  • Keras中的model.save()保存了什么
  • 是否保存从lat epoch(即100)获得的权重
  • 或者它保存了来自最佳纪元(即纪元85)的权重
  • 或者所有100个时代的平均或平均重量
  • keras model.save()设计用于在完成100个历元后保存权重的是什么

    感谢您提前解释:)。

    模型.save()保存整个体系结构、权重和优化器状态。此命令保存重建模型所需的详细信息

    该命令将保存:

    • 模型的架构,允许重新创建模型
    • 模型的权重
    • 培训配置(损失、优化器)
    • 优化器的状态,允许在您停止的位置恢复培训
    因此,您可以使用
    keras.models.load\u model(filepath)
    重新实例化您的模型<代码>加载模型还将使用保存的培训配置编译模型

    请参见示例:

    从keras.models导入负载模型
    model.save('my_model.h5')#创建一个HDF5文件'my_model.h5'
    del model#删除现有模型
    #返回已编译的模型
    #与前一个相同
    模型=负载模型('my\u model.h5')
    
    来源:

    模型.save()将保存有关NN的许多详细信息。最重要的细节是

  • 网络架构包括维度(输入/输出层、隐藏层等)
  • 每个层中每个隐藏单元的权重矩阵和激活函数。 还有许多其他细节,我们可能不需要在这里概述 回到问题的第二部分,当我们保存经过训练的模型时,它将保存最后一个历元后的损失值。这意味着,最终值将比上一个历元的值小或多,具体取决于您指定的历元数以及您从
    过度拟合中获得的接近程度

    此外,《代码》Keras
    的创建者弗朗索瓦·乔利特(Francois Chollet)认为,纪元的数量没有被保存,在大多数情况下也没有意义

    这是正确的,除非您激活
    回调
    选项,该选项在一定次数(您称之为最佳迭代)后打开网络训练的提前停止。看

    我的问题是,model.save()保存了什么,“它保存了权重吗?” 它来自lat epoch(即100)“或”它从 最佳历元(即历元85)“或”所有100个历元的平均或平均权重 时代

    所有保存的内容(权重、优化器状态等)已在其他答案中提到。在您的情况下,将保存100个纪元结束时模型的权重

    如果希望保存最佳模型(损失最少),则需要创建一个
    ModelCheckPoint
    回调对象,并通过
    callbacks
    参数将其传递给
    fit()
    方法

  • 它可以减轻重量
  • 为了保存最佳纪元的权重,请使用我下面给出的代码块
  • 没有
  • keras model.save()设计用于在完成100个历元后保存权重的是什么?。是的,确实如此,但请看一下下面的代码,它只保存了最好时期的权重

    使用这段代码可以:

  • 仅保存最佳纪元的权重
  • 仅当给定标准得到改进(val_损失最小)时,才在每个历元后更新权重
  • 此外,每个历元之后的历史记录将保存在.csv文件中
  • 代码
    链接:

    在EarlyStopping patience=10中。这是什么意思?。例如,这意味着从20年开始,直到30年前,该模型不会减少损失。保存第30纪元或第20纪元的权重。
    import pandas as pd
    from keras.callbacks import EarlyStopping, ModelCheckpoint
    
    #Stop when val_loss is not decreasing
    earlyStopping = EarlyStopping(monitor='val_loss', patience=10, verbose=0, mode='min')
    
    #Save the model after every epoch.
    checkpointer = ModelCheckpoint(filepath='Model_1_weights.h5', verbose=1, save_best_only=True)
    
    #history variable will save training progress after each epoch 
    history = model.fit(X_train, y_train, batch_size=20, epochs=40, validation_data=(X_valid, y_valid), shuffle=True, callbacks=[checkpointer, earlyStopping])
    #Save progress of each epoch in .csv file 
    hist_df = pd.DataFrame(history.history) 
    hist_csv_file = 'History_Model_1.csv'
    with open(hist_csv_file, mode='w') as f:
        hist_df.to_csv(f)