Python 列表(向量)不';t匹配tensorflow要求的形状
背景: 我正在构建一个基于机器学习模型的反病毒软件。 我构建了一个程序,它生成一个有486个值的列表(向量) 例如,这是缩短版本的外观(acutal向量有486个值): 我用一个数据库完成了模型的构建,一个xlsx文件,我从每一行提取它 问题: 现在,我试图预测某个文件是否是病毒,我为该文件构建了一个向量,并尝试使用该模型。predict(pe)函数(pe是我的向量),我得到一个错误,说我的向量与预期的形状不匹配:Python 列表(向量)不';t匹配tensorflow要求的形状,python,tensorflow,machine-learning,keras,Python,Tensorflow,Machine Learning,Keras,背景: 我正在构建一个基于机器学习模型的反病毒软件。 我构建了一个程序,它生成一个有486个值的列表(向量) 例如,这是缩短版本的外观(acutal向量有486个值): 我用一个数据库完成了模型的构建,一个xlsx文件,我从每一行提取它 问题: 现在,我试图预测某个文件是否是病毒,我为该文件构建了一个向量,并尝试使用该模型。predict(pe)函数(pe是我的向量),我得到一个错误,说我的向量与预期的形状不匹配: ' but received input with shape ' + str(
' but received input with shape ' + str(shape))
ValueError: Input 0 of layer sequential is incompatible with the layer: expected axis -1 of input shape to have value 486 but received input with shape [None, 1]
这是我的密码:
from tensorflow import keras
import vector_build #custom code that I made
model = keras.models.load_model("anti_virus_model.h5")
pe = vector_build.encode_pe("C:\\Windows\\System32\\calc.exe")
print(model.predict(pe))
我真的不知道该做什么以及如何改变向量的形状。
也许当我从.xlsx文件中提取数据时,它没有将其识别为相同的格式向量
如果你需要我补充什么,请告诉我
我很想听听你的想法!
提前谢谢 您可能对模型进行了批量数据培训?也就是说,您的输入具有shape
[batch\u size,486]
。Keras模型总是期望在其输入中有一个批处理轴,即使这是一个单独的示例。因此,请确保输入具有批处理轴
现在(我假设),您的输入只是shape
[486]
,也就是说,它没有批处理轴——您只需添加一个。您可以这样做:model.predict(pe[None])
。这将在前面添加一个大小为1的轴,使输入形状[1486]。您完全正确!我使用了一个2d数据并检查了每一行。当我构建一个向量时,它只有1d,所以模型不知道如何处理它!谢谢,添加pe[无]有效!
from tensorflow import keras
import vector_build #custom code that I made
model = keras.models.load_model("anti_virus_model.h5")
pe = vector_build.encode_pe("C:\\Windows\\System32\\calc.exe")
print(model.predict(pe))