这里使用搭建一个二分类的文本分类器的例子来说明:
1.第一种是使用Sequence()
model = Sequential()
if embedding_matrix is None:
model.add(Embedding(max_feature, embed_size))
else:
model.add(Embedding(max_feature, embed_size, weights=[embedding_matrix], trainable=False))
model.add(LSTM(64, activation='tanh', return_sequences=False))
model.add(Dense(16, activation='relu'))
model.add(Dense(1, activation='sigmoid'))
print(model.summary())
构建过程为:首先定义一个序列预处理类Sequence(), 再向其中add需要的层。
其中embedding_matrix
是你已经设置好的词向量矩阵。利用model.summary()
可以查看模型结构:
可以看到每一层的输出维度和参数。
2.第二种是直接使用多个Layer拼接起来:
content = Input(shape=(100,), dtype='int32')
embedding = Embedding(
name="word_embedding",
input_dim=embedding_matrix.shape[0],
weights=[embedding_matrix],
output_dim=embedding_matrix.shape[1],
trainable=False)
x = LSTM(64, activation='tanh', return_sequences=False)(embedding(content))
x = Dense(16, activation='relu')(x)
output = Dense(1, activation="sigmoid")(x)
model = Model(inputs=content, outputs=output)
print(model.summary())
两种基本方式都比较快捷。在TensorFlow2.0版本已经集成了Keras,只需要把引用从原有的from keras.layers import XXX
改成from tensorflow.keras.layers import XXX
即可。