我們將使用相同作品(荷馬的伊利亞特)三個不同版本的英文翻譯,然後訓練乙個模型來通過單行文字確定譯者。
三個版本的譯者分別是 william cowper、edward, earl of derby 以及 samuel butler。
請參考tensorflow2.0載入和預處理資料的方法彙總中的第七部分:匯入文字(用於文字分類)。
model = tf.keras.sequential(
)model.add(tf.keras.layers.embedding(vocab_size,64)
)model.add(tf.keras.layers.bidirectional(tf.keras.layers.lstm(64)
))# 乙個或多個緊密連線的層
# 編輯 `for` 行的列表去檢測層的大小
for units in[64
,64]:
model.add(tf.keras.layers.dense(units, activation=
'relu'))
# 輸出層。第乙個引數是標籤個數。
model.add(tf.keras.layers.dense(
3, activation=
'softmax'))
model.
compile
(optimizer=
'adam'
, loss=
'sparse_categorical_crossentropy'
, metrics=
['accuracy'
])
model.fit(train_data, epochs=
3, validation_data=test_data)
epoch 1/3
697/
697[
====
====
====
====
====
====
*****=]
- 26s 38ms/step - loss:
0.5212
- accuracy:
0.7495
- val_loss:
0.3996
- val_accuracy:
0.8162
epoch 2/3
697/
697[
====
====
====
====
====
====
*****=]
- 22s 31ms/step - loss:
0.2982
- accuracy:
0.8700
- val_loss:
0.4038
- val_accuracy:
0.8204
epoch 3/3
697/
697[
====
====
====
====
====
====
*****=]
- 23s 33ms/step - loss:
0.2288
- accuracy:
0.9010
- val_loss:
0.4032
- val_accuracy:
0.8266
>
eval_loss, eval_acc = model.evaluate(test_data)
print
('\neval loss: {}, eval accuracy: {}'
.format
(eval_loss, eval_acc)
)
79
/unknown - 3s 35ms/step - loss:
0.4032
- accuracy:
0.8266
eval loss:
0.40319899082938326
, eval accuracy:
0.8266000151634216
tensorflow2 0之one hot函式使用
先了解一下one hot要幹啥吧。來,咱先看個程式,你一定會很眼熟的。嘿,是不是發現什麼了?labels向量最後可以表示乘矩陣的方式,且 1 0 0 表示0,類推 0 1 0 0 表示1,這樣,可以表示 0 9總共九個數值。one hot的作用就是這樣的,作為儲存標籤的一種方式,用1的位置不同來區分...
Tensorflow2 0之卷積層實現
在 tensorflow 中,通過tf.nn.conv2d 函式可以方便地實現2d 卷積運算。tf.nn.conv2d基於輸入?和卷積核?進行卷積運算,得到輸出?其中?表示輸入通道數,表示卷積核的數量,也是輸出特徵圖的通道數。例如 in 1 x tf.random.normal 2 5,5 3 模擬...
TensorFlow2 0之RNN情感分類問題實戰
tensorflow2.0之rnn情感分類問題實戰 import tensorflow as tf from tensorflow import keras from tensorflow.keras import sequential,layers,datasets,optimizers,loss...