OperatorNotAllowedInGraphError:不允许在tf.Tensor上迭代:AutoGraph确实转换了此函数

时间:2020-10-25 04:39:04

标签: python tensorflow nlp tensorflow-serving

我正在为二进制情感分析创建一个模型,我已经进行了预处理,并且该模型运行良好。我试图创建一个初始输入层,然后创建一个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确实转换了此函数。这可能表明您正在尝试使用不受支持的功能。

我应该修改些什么来解决此问题?还是可以通过其他方式为预测添加这些输入的方法?

谢谢。

0 个答案:

没有答案