model.prediction in keras 使用通用句子编码器给出形状错误



我正在使用keras model.predict来预测情绪。我正在使用通用句子嵌入。在预测时,我得到下面描述的错误。请提供您的宝贵见解。问候。

我已经为两组输入运行了代码。例如,输入 1,获得预测。虽然它不适用于输入 2。

Input 1 is the form : {(a1,[sents1]),....}
Input 2:{((a1,a2),[sents11])),...}

用于预测的输入是从中提取的 [sents1]、[sents11] 等。

我可以在(Keras model.predict函数给出输入形状错误)中看到相关问题。但我不知道它是否解决了。此外,输入 1 正在工作。

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: input 必须是向量,得到形状: [] [[{{node lambda_2/module_1_apply_default/tokenize/StringSplit}} = StringSplit[skip_empty=true, _device="/作业:本地主机/副本:0/任务:0/设备:CPU:0"](lambda_2/module_1_apply_default/RegexReplace_1, lambda_2/module_1_apply_default/tokenize/Const)]]

尝试删除句子开头的尾随空格。new_text.strip()USE 通过拆分空格来使用预处理的句子,从尾随空格创建一些无法嵌入的空列表。(希望这个答案还不算太晚)

也可能是句子中缺少一些值,没有文本。需要排除这些。

最新更新