मैं एक तैनात Azure फ़ंक्शन में एकाधिक Keras मॉडल या वज़न लोड करने का प्रयास कर रहा हूं। बूँदें .h5 प्रारूप में सहेजी जाती हैं। मैंने कंटेनर और इस तरह एक विशिष्ट ब्लॉब का उपयोग किया है:

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

यह एक बाइट-ऑब्जेक्ट देता है, जिसे केरस की लोड_मॉडल विधि उपयोग नहीं कर सकती है:

from keras.models import load_model
load_model(myBlob)

>>> ValueError: stat: embedded null character in path

क्या ब्लॉब को .h5 के रूप में पढ़ने का कोई तरीका है और बाइट्स नहीं? या बाइट्स-ऑब्जेक्ट को इस तरह से पढ़ने का एक तरीका जो केरस द्वारा व्याख्या योग्य है?

1
Samuel 29 सितंबर 2020, 16:06

1 उत्तर

सबसे बढ़िया उत्तर

इस मुद्दे के संबंध में, कृपया निम्नलिखित कोड देखें

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()

enter image description here

1
Jim Xu 1 अक्टूबर 2020, 04:51