我正在使用 Keras 的 Lambda 层和 TensorFlow Hub 从预构建的嵌入器下载词嵌入。
import tensorflow_hub as hub
from tensorflow.dtypes import as_string
def embedding(x):
print(x.shape)
module = hub.Module("https://tfhub.dev/google/nnlm-en-dim128/1")
return module(x)
answers_network_rnn = Sequential()
print(trainingData["question"].shape)
answers_network_rnn.add(Lambda(embedding,output_shape=(128,)))
answers_network_rnn.add(Dense(16))
answers_network_rnn.add(Dense(Y_2_train_num.shape[1]))
answers_network_rnn.summary()
answers_network_rnn.compile("adam","categorical_crossentropy",metrics=['accuracy',f1]) answers_network_rnn_checkpoint = ModelCheckpoint('answers_network-rnn-best.h5', verbose=1, monitor='val_f1',save_best_only=True, mode='auto') answers_network_rnn.fit(x=X_2_train_text.values,y=Y_2_train_num)
我希望 Keras 为我的输入中的每个词构建了一个包含 128 个词嵌入列表的模型。实际上,Lambda 层在“嵌入”函数上运行时会导致以下错误。
“ValueError: Tensor 转换请求的 dtype 字符串为具有 dtype float32 的 Tensor: 'Tensor("sequential_5_input:0", shape=(?, 2), dtype=float32)'”
根据 GitHub 问题 ( https://github.com/keras-team/keras/issues/10021 )上的用户 nuric,此问题是由 Keras 试图推断输出形状引起的。如您所见,我已尝试通过指定所需的输出形状来解决此问题。
期望的输出:
[[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
...
[0. 0. 0. ... 0. 0. 0.]
[0. 0. 0. ... 0. 0. 0.]
[1. 0. 0. ... 0. 0. 0.]]
子衿沉夜
相关分类