Tensorflow處理變長特徵
阿新 • • 發佈:2020-11-27
處理流程:
- 變長特徵分割成變長陣列
- 變長資料填充成規則陣列,組成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'))
知乎的這個使用了lookup_embedding_sparse,自帶根據權重求平均。