我正在尝试从sklearn-learn加载我的分类器的pkl转储。
对于我的对象,joblib转储的压缩效果比cPickle转储的压缩效果好得多,因此我希望坚持使用它。但是,尝试从AWS S3读取对象时出现错误。
情况:
请注意,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)