tensorflow - 没有优化器的张量流 2.0 负载保存模型
问题描述
我训练了我的模型并像这样保存它:
network.save(os.path.join(args.logdir, "cifar_model.h5") ,
include_optimizer=False)
现在,我想加载它并继续这样的训练,但这不起作用
model = tf.keras.models.load_model("...\\cifar_model.h5", compile ="False")
model.compile(
optimizer=tf.keras.optimizers.RMSprop(learning_rate=0.001, decay=1e-6),
loss=tf.keras.losses.SparseCategoricalCrossentropy(),
metrics=[tf.keras.metrics.SparseCategoricalAccuracy(name="accuracy")],
)
model.tb_callback = tf.keras.callbacks.TensorBoard(args.logdir, update_freq=1000, profile_batch=1)
model.tb_callback.on_train_end = lambda *_: None
datagen = tf.keras.preprocessing.image.ImageDataGenerator(
rotation_range=15,
width_shift_range=0.1,
height_shift_range=0.1,
horizontal_flip=True,
)
datagen.fit(cifar.train.data["images"])
model.fit_generator(
# cifar.train.data["images"], cifar.train.data["labels"],
datagen.flow(cifar.train.data["images"], cifar.train.data["labels"], batch_size=args.batch_size),
# batch_size=args.batch_size,
steps_per_epoch=200,
epochs=args.epochs,
validation_data=(cifar.dev.data["images"], cifar.dev.data["labels"]),
callbacks=[model.tb_callback],
)
它抛出一个错误:
AttributeError: 'Network' object has no attribute 'compile'
这应该根据https://www.tensorflow.org/alpha/guide/keras/saving_and_serializing
请注意,我在没有优化器的情况下保存,因此可以避免加载优化器的错误。
更新:当我知道层的确切结构时,我发现了如何做到这一点。我知道,然后我可以重新创建模型并使用加载模型中的权重,如下所示:
load = tf.keras.models.load_model("...\\cifar_model.h5", compile ="False")
model.set_weights(load.get_weights())
但是我不能对 load.layers 应用同样的方法,我认为如果你没有顺序层,这是可能的
解决方案
推荐阅读
- javascript - 借助 RegExp 递归捕获标识符
- postgresql - 在 EMR 上将 Postgresql JDBC 源与 Apache Spark 一起使用
- javascript - 使用 bootstrap 4 模板提交表单时,Ajax 在 IE 和 Edge 中有效,但在 Firefox 中无效
- javascript - 我正在尝试使用 gulp 4 将值从一个任务转移到另一个任务,但是有错误
- html - 选中的获取点在teechart中
- neural-network - 如何处理NN训练过程的随机性?
- jquery - Jquery - 将默认值设置为动态生成的表单选择
- html - 当窗口宽度减小时,Div 宽度逐渐增加(带媒体查询)
- c - Windows:使用事件进行共享内存同步
- android - 必须在添加内容之前调用 requestWindowFeature()