我正在使用keras model.predict预测情绪。我正在使用通用句子嵌入。在进行预测时,出现以下错误。 请提供您的宝贵见解。 问候。
我已经为两组输入运行了代码。例如,输入1,即获得预测。虽然不适用于输入2。
Input 1 is the form : {(a1,[sents1]),....}
Input 2:{((a1,a2),[sents11])),...}
用于预测的输入是从中提取的[sents1],[sents11]等。
我可以在(Keras model.predict function giving input shape error)中看到相关的问题。但是我不知道它是否解决了。此外,input1正在工作。
import tensorflow as tf
import keras.backend as K
from keras import layers
from keras.models import Model
import numpy as np
def UniversalEmbedding(x):
return embed(tf.squeeze(tf.cast(x, tf.string)), signature="default", as_dict=True)["default"]
input_text = layers.Input(shape=(1,), dtype=tf.string)
embedding = layers.Lambda(UniversalEmbedding, output_shape=(embed_size,))(input_text)
dense = layers.Dense(256, activation='relu')(embedding)
pred = layers.Dense(category_counts, activation='softmax')(dense)
model = Model(inputs=[input_text], outputs=pred)
model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])
sents1=list(input2.items())
with tf.Session() as session:
K.set_session(session)
session.run(tf.global_variables_initializer())
session.run(tf.tables_initializer())
# model.load_weights(.//)
for i,ch in enumerate(sents1):
new_text=ch[1]
if len(new_text)>1:
new_text = np.array(new_text, dtype=object)[:, np.newaxis]
predicts = model.predict(new_text, batch_size=32)
InvalidArgumentError:输入必须是向量,形状为:[] [[{{node lambda_2 / module_1_apply_default / tokenize / StringSplit}} = StringSplit [skip_empty = true, _device =“ / job:localhost / replica:0 / task:0 / device:CPU:0”](lambda_2 / module_1_apply_default / RegexReplace_1, lambda_2 / module_1_apply_default / tokenize / Const)]]
答案 0 :(得分:0)
尝试删除句子开头的结尾空格。 new_text.strip() 通过分割空格来使用预处理的句子,从尾随空格创建一些空列表,这些列表无法嵌入。 (希望这个答案还不算太晚)
也可能是句子中缺少文本的一些缺失值。需要排除这些。