[英]How do I save my model when using multiple GPUs?
当我在 1 个 GPU 上训练时,我会调用model.save('test.model')
并且在训练结束时我会有一个名为test.model
的文件,然后我可以在预测代码中使用它。
现在我正在 2 个 GPU 上进行训练,当我调用model.save('test_2gpus.model')
,我得到一个名为test_2gpus.model
的文件夹。 在此文件夹中还有另外 2 个文件夹: assets
和variables
,以及另一个名为saved_model.pb
文件。 旧assets
为空, variables
文件夹中有 3 个文件: variables.data-00000-of-00002
、 variables.data-00001-of-00002
和variables.index
。
使用超过 1 个 GPU 时,是否必须以不同方式保存模型?
我应该得到一个.model
文件还是我应该得到那个文件夹? 如果我应该获取该文件夹,那么如何加载该文件夹?
*使用 tensorflow 2.0.0 版
*使用import tensorflow.keras as keras
使用超过 1 个 GPU 时,是否必须以不同方式保存模型?
请参阅此处的教程https://www.tensorflow.org/tutorials/distribute/save_and_load
不,你可以用model.save(path)
保存它,然后用tf.keras.models.load_model(path)
加载。
我应该得到一个 .model 文件还是我应该得到那个文件夹? 如果我应该获取该文件夹,那么如何加载该文件夹?
您应该获取一个文件夹,然后通过引用该文件夹进行加载。
strategy = tf.distribute.MirroredStrategy()
with strategy.scope():
model = ... # build model
model.compile()
folder = "test_2gpus.model"
model.save(folder)
model_loaded = tf.keras.models.load_model(folder)
如果你得到一个unknown loss
错误,那是因为模型是在加载时编译的。 tf.keras.models.load_model
有一个关键字参数compile
,默认情况下为True
。 要解决该错误,请设置compile=False
,然后在model.compile
调用中设置您的损失。 请记住,如果您只想使用模型进行预测,则无需编译。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.