Python 3.x 尝试使用预先训练的模型预测类时出现未知错误

Python 3.x 尝试使用预先训练的模型预测类时出现未知错误,python-3.x,tensorflow,keras,deep-learning,Python 3.x,Tensorflow,Keras,Deep Learning,在下面的教程中,我尝试使用model.save()将预先训练好的模型保存到.h5文件中。 我使用load\u model()将此模型加载到一个新文档中,当我试图使用它预测新数据时,我遇到了一个未知错误。我使用的是tensorflow gpu 我用于培训模型的代码如下所示: 将numpy导入为np 作为pd进口熊猫 导入tensorflow作为tf 从tensorflow.keras导入顺序 从tensorflow.keras.layers导入稠密、脱落、嵌入、CuDNNLSTM、双向 从skl

在下面的教程中,我尝试使用
model.save()
将预先训练好的模型保存到.h5文件中。

我使用
load\u model()
将此模型加载到一个新文档中,当我试图使用它预测新数据时,我遇到了一个未知错误。我使用的是
tensorflow gpu

我用于培训模型的代码如下所示:

将numpy导入为np
作为pd进口熊猫
导入tensorflow作为tf
从tensorflow.keras导入顺序
从tensorflow.keras.layers导入稠密、脱落、嵌入、CuDNNLSTM、双向
从sklearn.model\u选择导入列车\u测试\u拆分
"""
“我的数据集”是一个两列数据帧,其第一列(X)包含
一个经过预处理和编码的tweet,它被填充到47个单词的长度。我之所以这样做,是因为我正在将这些值传递到嵌入层
第二列(Y)是与该tweet关联的标签
X_train.shape=(89552,47)
Y.shape=(89552,)
声音大小=66167
最大发送长度=47
emd_dim=75
"""
X_序列,X_测试,y_序列,y_测试=序列测试分割(X,y,测试大小=0.2,随机状态=420)
x_列,x_值,Y_列,Y_值=列测试分割(x_列,Y_列,测试大小=0.1,随机状态=420)
模型=顺序([
嵌入(输入尺寸=语音尺寸,输出尺寸=emb尺寸,输入长度=最大发送长度,可训练长度=真),
双向(CuDNNLSTM(64,返回序列=False)),
辍学率(0.5),
密集型(2,激活='softmax')
])
compile(loss='sparse'\u categorical'\u crossentropy',optimizer='adam',metrics=['accurity'])
model.fit(x_-train,Y_-train,epochs=50,batch_-size=300,shuffle=True,validation_-data=(x_-val,Y_-val))
model.summary()
型号保存('trained/model-2-f.h5')
当我尝试使用这个模型进行预测时,我没有得到任何错误

我试图测试此模型是否已正确保存在另一个文件中,并使用具有相同属性的另一个数据集对其进行测试

从tensorflow.keras.models导入负荷模型
训练模型=负荷模型(“训练/模型-2-f.h5”)
"""
w_x是我用来预测
w_x.shape=(201,47)
"""
w_pred=训练的_模型。预测_类(w_x)
我得到的错误是:

UnknownError回溯(最近一次调用)
在里面
---->1 w_pred=经过训练的_模型。预测_类(w_x)
2 w_pred
预测类中的~\Anaconda3\envs\nlp\lib\site packages\tensorflow\python\keras\engine\sequential.py(self、x、批大小、详细)
316类预测的numpy数组。
317     """
-->318 proba=self.predict(x,批大小=批大小,详细=详细)
319如果概率形状[-1]>1:
320返回概率argmax(轴=-1)
预测中的~\Anaconda3\envs\nlp\lib\site packages\tensorflow\python\keras\engine\training.py(self、x、批处理大小、详细信息、步骤、回调、最大队列大小、工作者、使用多处理)
1076 verbose=详细,
1077步=步,
->1078回调=回调)
1079
1080 def重置_指标(自身):
模型迭代中的~\Anaconda3\envs\nlp\lib\site packages\tensorflow\python\keras\engine\training\u arrays.py(模型、输入、目标、样本权重、批量大小、年代、详细程度、回调、val_输入、val_目标、val_样本权重、无序、初始历元、每历元步长、验证步骤、验证频率、模式、验证拟合、从数据集准备的反馈值、步骤名称、**kwargs)
361
362#获取输出。
-->363批次输出=f(批次输入)
364如果不存在(批次,列表):
365批次输出=[批次输出]
~\Anaconda3\envs\nlp\lib\site packages\tensorflow\python\keras\backend.py in\uuuu调用(self,输入)
3290
3291 fetched=self.\u callable\u fn(*array\u vals,
->3292运行\u元数据=self.run\u元数据)
3293 self.\u call\u fetch\u callbacks(fetched[-len(self.\u fetches):]))
3294输出_结构=nest.pack_序列_as(
~\Anaconda3\envs\nlp\lib\site packages\tensorflow\python\client\session.py在调用中(self,*args,**kwargs)
1456 ret=tf_session.tf_SessionRunCallable(self._session._session,
1457自动控制手柄,args,
->1458运行(元数据)
1459如果运行\u元数据:
1460 proto_data=tf_session.tf_GetBuffer(run_metadata_ptr)
未知错误:找到2个根错误。
(0)未知:找不到dnn实现。
[{{node双向_2/CudnnRNN_1}}]
[[dense_2/Softmax/_243]]
(1) 未知:找不到dnn实现。
[{{node双向_2/CudnnRNN_1}}]
0成功的操作。
忽略0个派生错误。