tensorflow_hub預訓練模型


tensorflow_hub

武神教的這個預訓練模型,感覺比word2vec效果好很多~
只需要分詞,不需要進行詞條化處理
總評:方便,好用,在線加載需要時間

步驟

  1. 文本預處理(去非漢字符號,jieba分詞,停用詞酌情處理)
  2. 加載預訓練模型
  3. 可以加上attention這樣的機制等

給一個簡單的栗子,完整代碼等這個項目開源一起給鏈接
這里直接給模型的栗子


import tensorflow as tf
import tensorflow_hub as hub

# ResourceExhaustedError:  OOM when allocating tensor with shape[971177,50]
# early_stop = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=10)  callbacks 不能寫在這里? 會報錯 EagerVariableNameReuse
hub_layer = hub.KerasLayer("https://hub.tensorflow.google.cn/google/tf2-preview/nnlm-zh-dim50-with-normalization/1", output_shape=[50], 
                           input_shape=[], dtype=tf.string,trainable = True)

model = tf.keras.Sequential()
model.add(hub_layer)
model.add(tf.keras.layers.Dense(16, activation='relu'))
model.add(tf.keras.layers.Dropout(0.2))
model.add(tf.keras.layers.Dense(3, activation='softmax'))

model.summary()

model.compile(loss= 'sparse_categorical_crossentropy',
              optimizer='rmsprop',
              metrics=['accuracy'])

early_stop = tf.keras.callbacks.EarlyStopping(monitor='val_loss', patience=10)
history = model.fit(x= X_train, y= y_train, epochs= 100, validation_data= (X_dev, y_dev), batch_size= 100 ,verbose=1,callbacks= [early_stop])
#history = model.fit(train_dataset, epochs= 20, validation_data= dev_dataset) 會報錯?
plot_graphs(history, metric= 'accuracy')

pred = model.predict_classes(test_online)

應該把預訓練模型下載下來保存到本地,但是貌似要配置環境,會比較麻煩~

這個就迭代了10次,效果差~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM