python - 加载预训练的 keras 模型以在谷歌云上继续训练
问题描述
我正在尝试加载预训练的 Keras 模型,以便在谷歌云上继续训练。它在本地工作,只需加载鉴别器和生成器
model = load_model('myPretrainedModel.h5')
但显然这在谷歌云上不起作用,我尝试使用与从谷歌存储桶中读取训练数据相同的方法,使用:
fil = "gs://mygcbucket/myPretrainedModel.h5"
f = BytesIO(file_io.read_file_to_string(fil, binary_mode=True))
return np.load(f)
但是,这似乎不适用于加载模型,运行作业时出现以下错误。
ValueError:allow_pickle=False 时无法加载包含腌制数据的文件
添加allow_pickle=True
,引发另一个错误:
OSError:无法将文件 <_io.BytesIO object at 0x7fdf2bb42620> 解释为泡菜
然后我尝试了一些我发现的东西,因为有人建议我解决类似的问题,据我所知,它会暂时从存储桶中重新保存模型本地(相对于作业运行的位置),然后加载它,使用:
fil = "gs://mygcbucket/myPretrainedModel.h5"
model_file = file_io.FileIO(fil, mode='rb')
file_stream = file_io.FileIO(model_file, mode='r')
temp_model_location = './temp_model.h5'
temp_model_file = open(temp_model_location, 'wb')
temp_model_file.write(file_stream.read())
temp_model_file.close()
file_stream.close()
model = load_model(temp_model_location)
return model
但是,这会引发以下错误:
TypeError:预期的二进制或 unicode 字符串,得到 tensorflow.python.lib.io.file_io.FileIO 对象
我必须承认,我不确定我需要做什么才能从我的存储桶中实际加载预训练的 keras 模型,以及在我在谷歌云的培训工作中的用途。任何帮助都深表感谢。
解决方案
推荐阅读
- javascript - Alarm.name 总是返回 undefined
- ios - 如何在不隐藏底部标签栏的情况下快速呈现 UIViewController?
- css - 将鼠标悬停在css上时如何暂停幻灯片自动播放?
- java - 如何将 Map 对象传递给 RestController 方法?
- python - Unitests django-rest-framework
- python - 在python中按键分组对象数组
- django-rest-framework - 仅当用户和文章在 django Rest-Framework 中具有相同标记时,如何显示模型?
- php - 从 xml 检索到的数据在 php 上打印一个表
- java - 同一路径上的多个 JAX-RS 和 Spring servlet
- asp.net - 在 VIsual Studio 2019 中,有没有办法查看 ASPX 文件中某些方法或属性的引用?