Python 如何测试我用Keras创建的模型

Python 如何测试我用Keras创建的模型,python,keras,text-classification,Python,Keras,Text Classification,我正在研究Keras的文本分类问题。但是 我试图测试我创建的模型,但无法使用TFIDFvectorier测试该类 with open('model_architecture.json', 'r') as f: model = model_from_json(f.read()) model.load_weights('model_weights.h5') 安装模型后,我准备了一份测试列表供使用 test_data=["sentence1","sentence2","sentence3"] 到

我正在研究Keras的文本分类问题。但是 我试图测试我创建的模型,但无法使用TFIDFvectorier测试该类

with open('model_architecture.json', 'r') as f:
model = model_from_json(f.read())

model.load_weights('model_weights.h5')
安装模型后,我准备了一份测试列表供使用

test_data=["sentence1","sentence2","sentence3"]
到目前为止没有问题

但是

我犯了这样的错误

我也试过了

tf=TfidfVectorizer(binary=True)
test=tf.transform(test_data)

sklearn.exceptions.NotFittedError: TfidfVectorizer - Vocabulary wasn't fitted.
但是我收到了这样一个错误,我了解到fit()方法应该在这之前不能使用


但是我仍然无法测试我正在训练的模型

您需要使用与您适合并用于转换原始训练数据的TfIdfVectorizer对象完全相同的TfIdfVectorizer对象对测试数据进行编码,这要追溯到您最初训练模型的时候。如果将不同的TfidfVectorizer安装到测试数据中,则编码(包括vocab长度)将完全不同,无法工作。正是这种vocab长度的差异才是您看到的错误的直接原因。然而,即使您纯粹是偶然地获得了维度匹配,它仍然不起作用,因为当您使用将“cat”映射到13或其他什么的编码对模型进行测试时,该模型使用的是将“cat”映射到42或其他什么的编码。你基本上是在喂它乱七八糟的废话。除了获取原始的TfidfVectorizer,或者至少将TfidfVectorizer安装到具有完全相同配置的完全相同的文档中,实在别无选择。如果这是不可能的,那么您只需训练一个新的模型,这一次还记得保存TFIDFvectorier


通常,安装的预处理在初始培训期间通过
pickle.dump()
保存到pickle文件中,并使用
pickle.load()
加载以进行测试和生产,类似于您对
model\u architecture.json
model\u weights.hd5
所做的操作。还可以方便地将所有内容放在一起,这样您只需pickle一个对象,但我不确定如何与Keras模型一起工作。

使用我在培训期间使用的TfidfVectorizer,我可以通过使用transform(测试数据)培训的模型访问我想要的结果。但当我把这个模型搬到另一个地方时,我没有优势。我怎样才能解决这个问题?
tf=TfidfVectorizer(binary=True)
test=tf.transform(test_data)

sklearn.exceptions.NotFittedError: TfidfVectorizer - Vocabulary wasn't fitted.