我正在为二进制情感分析创建一个模型,我已经进行了预处理,并且该模型运行良好。我试图创建一个初始输入层,然后创建一个Lambda层,以便在保存模型并将其上传到Docker时获得输入,以便通过Tensorflow Serving获得预测。
创建用于预处理模型输入的函数:
@tf.function
def serving(input_serving: tf.string)-> tf.Tensor:
X = []
sentences = list(input_serving)
for sen in sentences:
X.append(preprocess_text(sen))
X = tokenizer.texts_to_sequences([input_serving])
X = pad_sequences(X, padding='post', maxlen=100)
rtn = tf.convert_to_tensor(X)
return rtn
这是我的模型的结构:
model = Sequential()
model.add(Input(shape=(),dtype="string"))
model.add(Lambda(serving))
embedding_layer = Embedding(vocab_size, 300, weights=[embedding_matrix], input_length=100 , trainable=False)
model.add(embedding_layer)
model.add(Dense(256, activation='relu'))
model.add(Dropout(rate=0.5))
model.add(Dense(128, activation='relu'))
model.add(Dropout(rate=0.5))
model.add(Dense(64, activation='relu'))
model.add(Dropout(rate=0.5))
model.add(Flatten())
model.add(Dense(1, activation='sigmoid'))
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['acc'])
尝试编译模型会出现以下错误:
OperatorNotAllowedInGraphError:不允许在tf.Tensor
上进行迭代:AutoGraph确实转换了此函数。这可能表明您正在尝试使用不受支持的功能。
我应该修改些什么来解决此问题?还是可以通过其他方式为预测添加这些输入的方法?
谢谢。