使用python从Azure数据湖加载数据块中的tensorflow keras模型时出现问题

yh2wf1be  于 2023-01-09  发布在  Python
关注(0)|答案(1)|浏览(199)

我有一个模型,保存在azure数据湖的一个容器中的project_name中,当我从数据库加载一个tensorflow模型时遇到了问题,之前在jupyter notebook中测试时,一切都运行良好,我必须迁移数据库中的代码。
这是我运行的代码。

model = tf.keras.models.load_model("abfss://dev@abcproddatalake.dfs.core.windows.net/hkay/project_name/model/keras2.tf", compile=False)

这就是我得到的错误。

UnimplementedError                        Traceback (most recent call last)
<command-3129204037083358> in <module>
      3 
      4 ## Loading a model
----> 5 model = tf.keras.models.load_model("abfss://dev@abcproddatalake.dfs.core.windows.net/hkay/project_name/model/keras2.tf", compile=False)

/local_disk0/.ephemeral_nfs/envs/pythonEnv-03228642-df50-44d1-8e0e-f760ea5a0429/lib/python3.8/site-packages/keras/utils/traceback_utils.py in error_handler(*args, **kwargs)
     68             # To get the full stack trace, call:
     69             # `tf.debugging.disable_traceback_filtering()`
---> 70             raise e.with_traceback(filtered_tb) from None
     71         finally:
     72             del filtered_tb

/local_disk0/.ephemeral_nfs/envs/pythonEnv-03228642-df50-44d1-8e0e-f760ea5a0429/lib/python3.8/site-packages/tensorflow/python/lib/io/file_io.py in file_exists_v2(path)
    288   """
    289   try:
--> 290     _pywrap_file_io.FileExists(compat.path_to_bytes(path))
    291   except errors.NotFoundError:
    292     return False

UnimplementedError: File system scheme 'abfss' not implemented (file: 'abfss://dev@abcproddatalake.dfs.core.windows.net/hkay/project_name/model/keras2.tf')

当我在jupyter notebook中运行它的时候它运行得很好,模型在我使用jupyter的时候保存在本地。
连接是工作的,因为我通过阅读路径中的文件测试了连接。这个型号的大小是1.6GB。我不知道为什么它不工作。有人知道吗?

wgx48brx

wgx48brx1#

不幸的是,Keras不理解URI。它被设计为只能处理本地文件,因此您需要使用本地路径保存或加载数据。

尝试使用dbutils.fs.cp,它会将数据从存储URL abfss://dev@axxx复制到本地路径。
将文件复制到/tmp/model.tf并加载。

#Setup storage configuration
spark.conf.set("fs.azure.account.key.<storage_account_name>.blob.core.windows.net","<access_key>")

dbutils.fs.cp("abfss://dev@abcproddatalake.dfs.core.windows.net/hkay/project_name/model/keras2.tf","/tmp/Demo_model.tf")

你可以检查天气模型复制或不使用下面的代码.

display(dbutils.fs.ls("/tmp/Demo_model.tf"))

装载型号:

from tensorflow import keras
model = keras.models.load_model("/tmp/Demo_model.tf")

相关问题