如何解决读取存储为.h5的blob,并在Python的Azure函数中加载keras模型
我正在尝试将多个Keras模型或权重加载到已部署的Azure函数中。斑点以.h5格式保存。我已经访问了容器和特定的Blob,如下所示:
from azure.storage.blob import BlockBlobService
blob_service=BlockBlobService(account_name=STORAGE_ACCOUNT_NAME,account_key=STORAGE_ACCOUNT_KEY)
blob = blob_service.get_blob_to_bytes(CONTAINER_NAME,BLOB_NAME)
myBlob = blob.content
这将返回一个字节对象,Keras的load_model方法无法使用:
from keras.models import load_model
load_model(myBlob)
>>> ValueError: stat: embedded null character in path
有没有一种方法可以将Blob读取为.h5而不是字节?还是以Keras可以解释的方式读取字节对象的方法?
解决方法
关于此问题,请参考以下代码
from keras.models import Sequential,load_model
import h5py
from azure.storage.blob import BlobClient
from io import BytesIO
con_str = ''
blob_client = BlobClient.from_connection_string(con_str,'test','model.h5')
downloader = blob_client.download_blob(0)
with BytesIO() as f:
downloader.readinto(f)
with h5py.File(f,'r') as h5file:
model = load_model(h5file)
model.summary()
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。