猿问

'tf' 未在 load_model() 上定义 - 使用 lambda

我有一个Keras模型,我试图导出并在不同的 Python 代码中使用。


这是我的代码:


from keras.models import Sequential

from keras.layers import Dense, Embedding, LSTM, GRU, Flatten, Dropout, Lambda

from keras.layers.embeddings import Embedding

import tensorflow as tf



EMBEDDING_DIM = 100


model = Sequential()

model.add(Embedding(vocab_size, 300, weights=[embedding_matrix], input_length=max_length, trainable=False))

model.add(Lambda(lambda x: tf.reduce_mean(x, axis=1)))

model.add(Dense(8, input_dim=4, activation='relu'))

model.add(Dense(3, activation='softmax'))

model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])

model.fit(X_train_pad, y_train, batch_size=128, epochs=25, validation_data=(X_val_pad, y_val), verbose=2)

model.save('my_model.h5') 

在另一个文件中,当我导入时my_model.h5:


from keras.models import load_model

from keras.layers import Lambda

import tensorflow as tf



def learning(test_samples):

    model = load_model('my_model.h5')

    #ERROR HERE

    #rest of the code

错误如下:


  in <lambda>

    model.add(Lambda(lambda x: tf.reduce_mean(x, axis=1)))

NameError: name 'tf' is not defined

经过研究,我发现我lambda在模型中使用的事实是导致此问题的原因,但是我添加了这些参考资料并没有帮助:


from keras.models import load_model

from keras.layers import Lambda

import tensorflow as tf

可能是什么问题呢?


慕尼黑5688855
浏览 262回答 3
3回答
随时随地看视频慕课网APP

相关分类

Python
我要回答