第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

全部開發(fā)者教程

TensorFlow 入門教程

使用 TF HUB 進行模型復用

我們在之前的學習之中學習過如何進行模型的保存與重復的利用,之后我們又學習了如何進行遷移學習。那么今天我們就來認識一個專門用于 TensorFlow 模型復用的庫 —— TensorFlow Hub。

1. 什么是 TensorFlow Hub 以及它的安裝

TensorFlow Hub 是一個針對可重復使用的機器學習模塊的庫。 —— 官方定義

也就是說,TensorFlow Hub 內部含有一些已經預訓練好的各種常用的網絡模型與相應的權重,我們只需要調用其接口就可以得到相應的模型。

TensorFlow Hub 的出現(xiàn)可以說極大地降低了我們使用 TensorFlow 進行遷移學習的難度。因此,當想要使用 TensorFlow 進行遷移學習的時候,我們的第一選擇應該是 TensorFlow Hub。

TensorFlow Hub 的安裝也非常簡單,我們只需要使用 pip 安裝即可:

pip install tensorflow-hub

倘若下載速度緩慢,可以查閱之前的 TensorFlow 安裝教程來使用國內鏡像源進行下載。

2. TensorFlow Hub 之中包含哪些模塊

TensorFlow HUB 之中包含的模塊大致可以分為四個種類,他們分別是:文本模型、圖像模型、音頻模型、視頻模型。

1. TensorFlow Hub 之中的文本模型

文本大類中又包含一些小的分類,比如分類、情感分析、語義分析等,這里介紹一些常用的模型:

  • gnews-swivel-20dim/1 模型:文本任務的一個基本的遷移模型,包含 20 維的詞向量;
  • nnlm-en-dim50/1 模型:巨大的模型,包含 1M 個詞匯量與 50 維的詞向量;
  • nnlm-en-dim128/1 模型:非常巨大的模型,包含 1M 個詞匯量與 128 維詞向量;
  • BERT:迄今為止最大的文本處理模型。

使用以上幾種模型,可以滿足我們絕大多數(shù)的文本任務的遷移學習的需求。

2. TensorFlow Hub 之中的圖像模型

圖像模型最主要是進行特征提取而使用的模型,我們一般會摒棄掉這些模型的最后幾個網絡層,從而達到特征提取的目的。

  • mobilenet_v2:一個小型的遷移學習模型,可以勝任一些基本的任務;
  • arbitrary-image-stylization:一個用來進行圖像風格處理的模型;
  • ResNet:規(guī)模從小到大都有,是最常用的特征提取模型。

3. TensorFlow Hub 之中的音頻模型

在音頻的處理之中,我們最常用的網絡模型就是 “spice” 模型,該模型能夠很好地對音頻信號進行特征的提取。

另外,我們可以使用 Librosa 等工具提取出 MFCC 等特征之后,再使用 ResNet 等圖像特征提取模型進行下一步的處理。

4. TensorFlow Hub 之中的視頻模型

在視頻處理之中,我們最常用的方式是將視頻分為獨立的幀,然后對于每一幀使用圖像模型進行特征的提取,從而將其轉化為一個圖片特征提取問題。

3. 如何使用 TensorFlow Hub

我們要使用 TensorFlow Hub 之中的網絡模型,我們只需要知道該模型對應的地址即可,而這些地址可以通過 TensorFlow Hub 官方網站進行查詢。

在使用的過程之中,我們只需要經過如下幾個步驟:

  • 找到模型對應的 URL ;
  • 使用 hub 對應的 API 來下載該網絡模型并進行載入,比如我們常用的 Keras 模型可以通過 hub.KerasLayer API 來進行調用;
  • 將加載的預訓練模型加入到自己的網絡之中
import tensorflow as tf
import tensorflow-hub as hub

model = "https://tfhub.dev/google/tf2-preview/gnews-swivel-20dim/1"
hub_layer = hub.KerasLayer(model, output_shape=[20], 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.Dense(1))

如上述代碼所示,我們就通過 hub.KerasLayer API 載入了一個預訓練模型,并且加入到了自己的模型之中。

4. 使用 TensorFlow Hub 進行遷移學習的文本分類實例

在這一小結,我們會使用 TensorFlow Hub 的一個內置的文本網絡模型來進行文本的分類任務的學習。

在這里,我們依然采用 IMDB 分類的任務來進行演示。

import tensorflow as tf
import numpy as np
import tensorflow_hub as hub
import tensorflow_datasets as tfds

# 定義基本參數(shù)
EPOCHS = 30
BATCH_SIZE = 64

# 獲取數(shù)據(jù)
train_data, test_data = tfds.load(name="imdb_reviews", split=["train", "test"], batch_size=BATCH_SIZE, as_supervised=True)

train_examples, train_labels = tfds.as_numpy(train_data)
test_examples, test_labels = tfds.as_numpy(test_data)


# 定義模型
model = "https://tfhub.dev/google/tf2-preview/gnews-swivel-20dim/1"
hub_layer = hub.KerasLayer(model, output_shape=[20], 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.Dense(1))

model.summary()

# 編譯模型
model.compile(optimizer='adam', loss='binary_crossentropy', metrics=['accuracy'])

# 訓練
history = model.fit(train_examples, train_labels, epochs=EPOCHS, batch_size=BATCH_SIZE)

# 測試
results = model.evaluate(test_examples, test_labels)

print(results)

在這里,我們首先使用 tesnorflow_datasets 獲取了 IMDB 的數(shù)據(jù)集;然后我們便定義了我們的模型,這里的模型采用的是上一小節(jié)定義的遷移模型,最后我們進行了訓練。

最終我們的得到的結果為:

Model: "sequential_2"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
keras_layer_2 (KerasLayer)   (None, 20)                400020    
_________________________________________________________________
dense_4 (Dense)              (None, 16)                336       
_________________________________________________________________
dense_5 (Dense)              (None, 1)                 17        
=================================================================
Total params: 400,373
Trainable params: 400,373
Non-trainable params: 0
_________________________________________________________________
Epoch 1/30
391/391 [==============================] - 5s 12ms/step - loss: 1.5181 - accuracy: 0.6126
Epoch 2/30
391/391 [==============================] - 5s 13ms/step - loss: 0.7655 - accuracy: 0.6738
.........
Epoch 30/30
391/391 [==============================] - 5s 12ms/step - loss: 0.0454 - accuracy: 0.9963
782/782 [==============================] - 3s 4ms/step - loss: 1.5898 - accuracy: 0.8366
[1.589829683303833, 0.8365600109100342]

可以看到,我們的模型一共包括三層,剛好符合我們的預期,同時我們的模型最終也在測試集合上達到了 83% 的準確率,而這是一個良好的結果。

4. 小結

在這節(jié)課的學習之中,我們了解了什么是 TensorFlow Hub,同時我們了解了 TensorFlow Hub 內部所包含的模型的大致類別;然后我們學習了如何使用這些網絡模型;最終我們通過一個簡單的示例了解了其具體的用法。