我正在使用 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:张量转换为 dtype float32 的张量请求 dtype 字符串:'Tensor("sequential_5_input:0", shape=(?, 2), dtype=float32)'”
根据 GitHub 问题 ( https://github.com/keras-team/keras/issues/10021 ) 上的用户 nuric,此问题是由 Keras 试图推断输出形状引起的。如您所见,我试图通过指定所需的输出形状来解决此问题。
这是神经网络的输入和期望输出:
输入
[['to whom did the virgin mary allegedly appear in 1858 in lourdes france?'
'architecturally, the school has a catholic character. atop the main building\'s gold dome is a golden statue of the virgin mary. immediately in front of the main building and facing it, is a copper statue of christ with arms upraised with the legend "venite ad me omnes". next to the main building is the basilica of the sacred heart. immediately behind the basilica is the grotto, a marian place of prayer and reflection. it is a replica of the grotto at lourdes, france where the virgin mary reputedly appeared to saint bernadette soubirous in 1858. at the end of the main drive (and in a direct line that connects through 3 statues and the gold dome), is a simple, modern stone statue of mary.']
['what is in front of the notre dame main building?'
'architecturally, the school has a catholic character. atop the main building\'s gold dome is a golden statue of the virgin mary. immediately in front of the main building and facing it, is a copper statue of christ with arms upraised with the legend "venite ad me omnes". next to the main building is the basilica of the sacred heart. immediately behind the basilica is the grotto, a marian place of prayer and reflection. it is a replica of the grotto at lourdes, france where the virgin mary reputedly appeared to saint bernadette soubirous in 1858. at the end of the main drive (and in a direct line that connects through 3 statues and the gold dome), is a simple, modern stone statue of mary.']
['the basilica of the sacred heart at notre dame is beside to which structure?'
'architecturally, the school has a catholic character. atop the main building\'s gold dome is a golden statue of the virgin mary. immediately in front of the main building and facing it, is a copper statue of christ with arms upraised with the legend "venite ad me omnes". next to the main building is the basilica of the sacred heart. immediately behind the basilica is the grotto, a marian place of prayer and reflection. it is a replica of the grotto at lourdes, france where the virgin mary reputedly appeared to saint bernadette soubirous in 1858. at the end of the main drive (and in a direct line that connects through 3 statues and the gold dome), is a simple, modern stone statue of mary.']
期望的输出:
[[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.]]