首頁>技術>

上篇我們學習瞭如何用Tensorflow機器學習來對電影評論進行正負面情緒判斷,接下來我們將學習如何Tensorflow裡的遷移學習來解決電影評論問題。我們先在 PyCharm->File->Settings->Project裡add遷移學習庫 tensorflow-hub,輕量級資料庫tfds-nightly。

安裝tensorflow-hub

用人工智慧處理任何問題,我們知道第一步都是載入資料集,我們從tensorflow開源庫中下載imdb電影評論資料,這裡我們看到下載方法與前一篇不太一樣了,這裡我們是透過tensorflow輕量級資料庫tensorflow_datasets來完成資料下載和載入的。我們在載入資料時直接將資料集分割為兩部分了,其中60%是訓練集,40%是測試集。由於上一篇我們已經列印了資料集裡的資料,看到了資料模樣,所以這裡就不再去還原資料了,我們知道它就是由一個評論陣列和一個標籤陣列構成,評論陣列就是儲存的評論單詞索引,標籤陣列就是一堆0和1,0表示負面評論,1表示正面評論。

# 將訓練集分割成 60% 和 40%,從而最終我們將得到 15,000 個訓練樣本# 10,000 個驗證樣本以及 25,000 個測試樣本。train_data, validation_data, test_data = tfds.load(    name="imdb_reviews",     split=('train[:60%]', 'train[60%:]', 'test'),    as_supervised=True)

資料載入好後就得開始構建模型了,遷移學習與傳統機器學習最大的不同點就是“遷移”,什麼意思呢?就跟牛頓發現萬有引力一樣,牛頓說自己是站在巨人的肩膀上的。遷移學習也是如此,本來就已經有一個訓練好的模型了,站在這個模型基礎之上再去訓練,尋找一個更高效的模型,這就叫遷移學習。如下程式碼,我們直接從tensorflow-hub的模型集散中心裡拉下一個訓練好的模型 gnews,把它作為一個嵌入層,放在構建模型之前。

embedding = "https://hub.tensorflow.google.cn/google/tf2-preview/gnews-swivel-20dim/1"hub_layer = hub.KerasLayer(embedding, input_shape=[],                           dtype=tf.string, trainable=True)

接下來構建模型時,我們把這個帶有已訓練好的模型的嵌入層放在最開始,讓我們的模型站在它的肩膀上。後面兩行model.add我們很熟悉了,就是先新增一個Relu啟用函式,再新增一個機率迴歸層。

model = tf.keras.Sequential()model.add(hub_layer)model.add(tf.keras.layers.Dense(16, activation='relu'))model.add(tf.keras.layers.Dense(1))model.summary()

遷移學習的模型搭建好,我們就開始編譯模型,這與上篇一樣,設定最佳化器、損失函式和衡量指標,這裡就不再詳細解釋了。

model.compile(optimizer='adam',              loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),              metrics=['accuracy'])

模型編譯好後,就可以開始訓練了。上篇我們讓epochs=40訓練了40遍,後來觀察損失函式曲線知道,訓練次數過多導致模型過擬合了,所以這裡我們就設定20遍即可。

history = model.fit(train_data.shuffle(10000).batch(512),                    epochs=20,                    validation_data=validation_data.batch(512),                    verbose=1)

模型訓練後,就可以讓模型跑在測試集上,呼叫model.evaluate函式對模型進行效果評估。

results = model.evaluate(test_data.batch(512), verbose=2)for name, value in zip(model.metrics_names, results):  print("%s: %.3f" % (name, value))

小編本想把執行結果截圖給大家看,只可惜家裡的網突然變得很差,資料集下載了半天也沒下載完。哎,要想學習人工智慧,看來不光要準備一顆熱情的心,還得準備一臺高配電腦,一根高速網線!

下載資料

13
  • BSA-TRITC(10mg/ml) TRITC-BSA 牛血清白蛋白改性標記羅丹明
  • 梳理java中執行緒的建立方式