【问题标题】:Serving Keras Model Using Django使用 Django 服务 Keras 模型
【发布时间】:2019-02-25 02:46:33
【问题描述】:

我有一个预训练的 keras 模型(.hdf5 格式),我计划使用 Django Web-App 进行部署。在我的视图文件中,当传入某个 POST 请求时会调用它。我已将 .hdf5 模型存储在与我的 web 应用程序关联的静态文件夹中。但是,当我调用 keras.models.load_model 尝试从静态目录加载模型时,应用程序返回以下错误:

Unable to open file (unable to open file: name = '/static/model.hdf5', errno = 2, error message = 'No such file or directory', flags = 0, o_flags = 0)

但是,模型显然在我的静态文件夹中,所以我不确定为什么 load_model 函数无法加载模型。

如果有某种原因或解决方法,我不确定,因此任何有关解决方案的信息都会有所帮助。我也愿意切换到 tensorflow 服务模型,或者如果这是一个 keras 问题/这将是有益的。

我无法从我的 Django 应用程序加载我的 keras 模型的原因是什么?我该如何补救?

【问题讨论】:

  • 您可以尝试将其添加到您的settings.py 文件中,看看是否可以解决问题? STATICFILES_DIRS = [os.path.join(BASE_DIR, "static")]

标签: python django tensorflow keras


【解决方案1】:

Django 中的static 目录用于为用户提供媒体和其他静态内容,例如图像或样式表。如果您想使用内部脚本访问文件,则适用于访问文件的普通 Python 规则。只需将模型放在您可以访问的源代码树中的某个位置。例如,如果模型与您的 views.py 位于同一位置,则可以这样做:

def my_view(request):
    if request.POST.get['foo', ''] == 'do_something':
        keras.models.load_model('model.hdf5')

顺便说一句,除非我遗漏了什么,否则您可能根本不想将模型放在静态文件夹中;这可能会导致模型本身可供任何人访问。

【讨论】:

  • 不是每次发布请求时都加载模型相当不利吗?我认为应该有一种方法可以将模型加载一次且仅一次(即一旦服务器启动)
猜你喜欢
  • 2017-09-24
  • 2019-04-21
  • 1970-01-01
  • 1970-01-01
  • 2014-06-10
  • 2023-03-24
  • 1970-01-01
  • 2018-10-07
  • 2019-01-09
相关资源
最近更新 更多