用例:我试图在Google App Engine中加载一个预先训练好的Keras模型为.h5文件。我正在Python Runtime3.7和标准环境中运行App Engine。
(2)也许有一种方法可以将model.h5从Google Storage加载到Google App Engine中,这是我没有想到的,例如使用其他函数(tf.keras.models.load_model()
)或其他格式?
我只是想读一下模型,以便进行预测。不需要编写或训练模型。
在使用之前必须先下载文件,云存储路径不能用来访问对象。文档中有一个关于如何下载对象的示例:
from google.cloud import storage
def download_blob(bucket_name, source_blob_name, destination_file_name):
"""Downloads a blob from the bucket."""
# bucket_name = "your-bucket-name"
# source_blob_name = "storage-object-name"
# destination_file_name = "local/path/to/file"
storage_client = storage.Client()
bucket = storage_client.bucket(bucket_name)
blob = bucket.blob(source_blob_name)
blob.download_to_filename(destination_file_name)
print(
"Blob {} downloaded to {}.".format(
source_blob_name, destination_file_name
)
)
然后将文件写入/tmp
临时文件夹,这是App Engine中唯一可用的文件夹。但是您必须考虑到,一旦使用该文件的实例被删除,该文件也将被删除。
更具体地说,要加载keras模型,将其作为泡菜是很有用的,如本教程所示:
def _load_model():
global MODEL
client = storage.Client()
bucket = client.get_bucket(MODEL_BUCKET)
blob = bucket.get_blob(MODEL_FILENAME)
s = blob.download_as_string()
MODEL = pickle.loads(s)
我还找到了另一篇Stackoverflow文章的答案,它涵盖了您实际需要的内容。
问题内容: 如何在Keras中从HDF5文件加载模型? 我试过的 上面的代码将最佳模型成功保存到名为weights.hdf5的文件中。然后,我要加载该模型。下面的代码显示了我如何尝试这样做: 这是我得到的错误: 问题答案: 仅设置网络的权重。您仍然需要在调用之前定义其体系结构:
问题内容: 我正在尝试从我训练的模型中保存和加载权重。 我用来保存模型的代码是。 让我知道这是不正确的方法,还是有更好的方法。 但是当我尝试使用它们加载它们时, 但我得到这个错误: 关于我可能在做错的任何建议吗?先感谢您。 问题答案: Keras提供了三种不同的保存方法。这些在上面(带有示例)以及下面的视频链接中进行了描述。 首先,收到错误的原因是因为您打错电话。 要保存和加载模型的权重,您首先需
问题内容: 我正在构建一个小的Flask应用程序,该应用程序在后台使用卷积神经网络对用户上传的图像进行预测。如果我这样加载它,它将起作用: 但是,这要求在用户添加图像之后加载分类器(clf)。这需要一段时间,因为它需要根据一个pickle文件为200层以上的神经网络设置所有权重。 我想要做的是在生成应用程序时加载所有权重。为此,我尝试了此操作(为HTML模板/导入/应用启动切出了不相关的代码):
问题内容: 在Keras中,如果您需要自定义损失以及其他参数,我们可以像https://datascience.stackexchange.com/questions/25029/custom- loss-function-with-additional-parameter-in- 凯拉斯 当我训练模型时,上述方法有效。但是,一旦训练了模型,我将很难加载模型。当我尝试在load_model中使用c
我搜索过类似的问题,但没有找到解决方案。我有16位灰度图像,我正在尝试将它们放入keras ImageDataGenerator中。当使用诸如:flow_from_dataframe之类的函数时,它会生成所有具有相同像素值的图像(不正确)。 我尝试使用keras preprocess_输入,通过自定义预处理函数将其重新缩放到[0,1],再缩放到[-1,1],但这些都不起作用。我还在ImageDat