Python 芹菜错误:numpy数组不可JSON序列化
我用的是装有芹菜和redis的烧瓶服务器。调用.apply\u async()时出错。numpy阵列是keral神经网络模型输出可视化的一部分。我知道有一种方法可以将keras模型转换为json。我的主要问题在于,我不知道芹菜何时或如何进行转化,我无法控制它 这是我的密码:Python 芹菜错误:numpy数组不可JSON序列化,python,json,numpy,serialization,celery,Python,Json,Numpy,Serialization,Celery,我用的是装有芹菜和redis的烧瓶服务器。调用.apply\u async()时出错。numpy阵列是keral神经网络模型输出可视化的一部分。我知道有一种方法可以将keras模型转换为json。我的主要问题在于,我不知道芹菜何时或如何进行转化,我无法控制它 这是我的密码: @celery.task(bind=True) def celery_createDirectoryAndSaveNNOutput(self, pInput, ID, filename, layersToShow, mode
@celery.task(bind=True)
def celery_createDirectoryAndSaveNNOutput(self, pInput, ID, filename, layersToShow, model):
layer_outputs = [layer.output for layer in model.layers[1:]]
viz_model = Model(input=model.input, output=layer_outputs)
features = viz_model.predict(pInput)
layerOutputs = {}
folderName = "static/"+ID+"_"+filename
if not os.path.exists(folderName):
os.makedirs(folderName)
for layerIndex in layersToShow:
images = getFeatureMapImages(features[int(layerIndex)])
layerOutputs[layerIndex] = []
for i in range(0, len(images)):
path = folderName+"/layer"+str(int(layerIndex))+"_"+str(i)+".jpg"
cv2.imwrite(path, images[i])
layerOutputs[layerIndex].append(path)
self.update_state(state='PROGRESS', meta={'current': 0, 'total': 10,"status":filename})
return {'current': i, 'total': len(layersToShow),'status': "temp"}
@app.route("/nnvisualisation_uploadMultipleImages", methods=["POST"])
def nnvisualisation_uploadMultipleImages():
uploaded_files = request.files.getlist("file[]")
weight = request.form.get("weight")
ID = request.form.get("ID")
layersToShow = [5]
modelName = "VGG16"
preds = {}
path = os.path.join(STATIC_PATH, uploaded_files[0].filename)
uploaded_files[0].save(os.path.join(STATIC_PATH, uploaded_files[0].filename))
pInput, result = preTrainedModel[modelName](path)
#ERROR HERE:
task = celery_createDirectoryAndSaveNNOutput.s( pInput=pInput, ID=ID, filename=uploaded_files[0].filename, layersToShow=layersToShow, model=getModel(modelName)).apply_async(serializer='json')
...
return jsonify({}), 202, {'Location': url_for('taskstatus',task_id=task.id)}
我已经尝试了所有可用的序列化程序
亚马尔:
编码器错误:无法表示对象:keras.engine.training.Model
对象位于0x10fdf26d0>
泡菜:
编码器错误:无法pickle类型“module”:属性查找
内置的。模块失败
msgpack:
EncodeError:无法序列化数组([-103.93900299,-107.77899933,
-123.6800031],…,dtype=float32)(numpy数组)
json:
编码器错误:数组([-103.93900299,-107.77899933,
-123.6800031],…,dtype=float32)(numpy数组)不可JSON序列化
非常感谢您的任何意见或建议。谢谢。
虽然这只保存了架构
而不是权重等
在任何情况下,您都需要探索keras提供的方法
虽然这只保存了架构
而不是权重等
在任何情况下,您都需要探索keras
提供的方法
我的主要问题在于,我不知道芹菜何时或如何进行转化,我无法控制它
有一种方法可以控制转换。
您可以注册定制的json序列化程序,它可以转储numpy数组
请参阅本文件
这是一个很好的例子
我的主要问题在于,我不知道芹菜何时或如何进行转化,我无法控制它
有一种方法可以控制转换。
您可以注册定制的json序列化程序,它可以转储numpy数组
请参阅本文件
还有一个很好的方法。
json
是一种与javascript
兼容的字符串格式。它对字典、列表和字符串进行编码。其他python
类必须将自己“序列化”到其中一种结构中。numpy
数组不会自动做到这一点,尽管有一些工具可以提供帮助。搜索一下keras
和json
。谢谢你的评论。我知道有一种方法可以将keras模型转换为json。我的主要问题在于,我不知道芹菜何时或如何执行转换,我无法控制它。json
是一种与javas兼容的字符串格式Script
。它对字典、列表和字符串进行编码。其他python
类必须将自己“序列化”到其中一个结构中。numpy
数组不会自动这样做,尽管有一些工具可以提供帮助。对keras
和json
进行一些搜索。谢谢您的评论。我知道有一种方法可以将keras模型转换为json。我的主要问题在于,我不知道Cellery何时或如何执行转换,我无法控制它。谢谢你的评论。问题是转换是由Cellery完成的,所以我无法控制如何将模型更改为json。你能帮我翻译一下吗请告诉我应该把这行代码放在哪里?我不知道芹菜在哪里序列化它。谢谢。谢谢你的评论。问题是转换是由芹菜完成的,所以我无法控制如何将模型更改为json。你能告诉我应该把这行代码放在哪里吗?我不知道芹菜在哪里谢谢你。
# save as JSON
json_string = model.to_json()