相关疑难解决方法(0)

AWS S3的Sklearn Joblib加载功能IO错误

我正在尝试从sklearn-learn加载我的分类器的pkl转储。

对于我的对象,joblib转储的压缩效果比cPickle转储的压缩效果好得多,因此我希望坚持使用它。但是,尝试从AWS S3读取对象时出现错误。

情况:

  • 本地托管的PKL对象:pickle.load有效,joblib.load有效
  • 使用应用程序将Pkl对象推送到Heroku(从静态文件夹加载):pickle.load有效,joblib.load有效
  • 将pkl对象推送到S3:pickle.load有效,joblib.load返回IOError。(通过heroku应用进行测试,并通过本地脚本进行测试)

请注意,joblib和pickle的pkl对象是使用各自方法转储的不同对象。(即joblib仅加载joblib.dump(obj),而pickle仅加载cPickle.dump(obj)。

Joblib vs cPickle代码

# case 2, this works for joblib, object pushed to heroku
resources_dir = os.getcwd() + "/static/res/" # main resource directory
input = joblib.load(resources_dir + 'classifier.pkl')

# case 3, this does not work for joblib, object hosted on s3
aws_app_assets = "https://%s.s3.amazonaws.com/static/res/" % keys.AWS_BUCKET_NAME
classifier_url_s3 = aws_app_assets + 'classifier.pkl'

# does not work with raw url, IO Error
classifier = joblib.load(classifier_url_s3)

# urrllib2, can't open instance
# TypeError: coercing to …
Run Code Online (Sandbox Code Playgroud)

python amazon-s3 pickle scikit-learn joblib

4
推荐指数
1
解决办法
5142
查看次数

标签 统计

amazon-s3 ×1

joblib ×1

pickle ×1

python ×1

scikit-learn ×1