處理流程:
- 變長特徵分割成變長數組
- 變長數據填充成規則數組,組成n * m的矩陣 (keras.preprocessing.sequence.pad_sequences)
- 每一行數據進行embedding,結果可以按權重求平均、直接求平均、求最大值 得到 n*1結果矩陣
第3步求平均可以用tf.nn.lookup_embedding_sparse 來做,也可以在Embedding之後再加一層MaxPooling2D或者AVGPooling2D。
參考:
# Define the Keras model
model = Sequential()
model.add(Embedding(num_distinct_words, embedding_output_dims, input_length=max_sequence_length))
model.add(Dropout(0.50))
model.add(Conv1D(filters=32, kernel_size=2, padding='same', activation='relu'))
model.add(Dropout(0.50))
model.add(MaxPooling1D(pool_size=2))
model.add(Flatten())
model.add(Dropout(0.50))
model.add(Dense(1, activation='sigmoid'))
-
https://zhuanlan.zhihu.com/p/141443615
知乎的這個使用了lookup_embedding_sparse,自帶根據權重求平均。 -
https://zhuanlan.zhihu.com/p/94212544
lookup_sparse 計算方法