如何使用tensorflow hub层嵌入卷积层进行文本?

2024-09-29 21:32:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我是TensorFlow hub的新手,我正在尝试使用Conv1D网络中的hub嵌入层进行文本分类

在顺序模型中使用集线器嵌入层没有任何问题:

hub_layer = hub.KerasLayer("https://tfhub.dev/google/nnlm-en-dim50/2", 
input_shape=[], dtype=tf.string, trainable=False)

model = tf.keras.Sequential()
model.add(hub_layer)
model.add(tf.keras.layers.Dense(128))
model.add(tf.keras.layers.Activation('relu'))
model.add(tf.keras.layers.Dense(5))
model.add(tf.keras.layers.Activation('softmax'))

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

但是,我无法在Conv1D模型中使用:

第一款:

int_sequences_input = Input(shape=(max_length,))
embedded_sequences = hub_layer(int_sequences_input)
x = layers.Conv1D(128, 5, activation="relu")(embedded_sequences)
x = layers.MaxPooling1D(5)(x)
x = layers.Conv1D(128, 5, activation="relu")(x)
x = layers.GlobalMaxPooling1D()(x)
x = layers.Dense(128, activation="relu")(x)
x = layers.Dropout(0.5)(x)
preds = layers.Dense(len(class_names), activation="softmax")(x)
model = keras.Model(int_sequences_input, preds)
model.summary()

或:

第二种模式:

model = tf.keras.Sequential()
model.add(hub_layer)
model.add(tf.keras.layers.Conv1D(128, 7, activation='relu'))
model.add(tf.keras.layers.GlobalMaxPooling1D())
model.add(tf.keras.layers.Dense(64, activation='relu'))
model.add(tf.keras.layers.Dense(num_classes, activation='softmax'))

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

因为我得到的值错误为:

ValueError: Input 0 of layer conv1d_11 is incompatible with the layer: expected ndim=3, found ndim=2. Full shape received: [None, 50]

我想知道有没有解决办法? 我调查了{a1}或{a2},但没有一个能解决我的问题


Tags: addlayerinputmodellayerstfactivationkeras
1条回答
网友
1楼 · 发布于 2024-09-29 21:32:34

生成的嵌入维度是:(num_examples, embedding_dimension),这与1D卷积不兼容,因为它需要3D输入

尝试在轮毂层之后重塑形状,如下所示:

model.add(hub_layer)
model.add(tf.keras.layers.Reshape((1,50)))
model.add(tf.keras.layers.Conv1D(16, 3, activation='relu', padding = 'same'))
...

相关问题 更多 >

    热门问题