我只是按照Hands-On Machine Learning with Scikit-Learn and TensorFlow一書中的一個TensorFlow例子,但得到了奇怪的結果。
這個例子:
import tensorflow as tf
from tensorflow import keras
tf.__version__
語法和語法的關系
fashion_mnist = keras.datasets.fashion_mnist
(X_train_full, y_train_full), (X_test, y_test) = fashion_mnist.load_data()
X_valid, X_train = X_train_full[:5000] / 255.0, X_train_full[5000: ] / 255.0
y_valid, y_train = y_train_full[:5000] / 255.0, y_train_full[5000: ] / 255.0
class_names = ["T恤/上衣", "長褲", "套頭衫", "裙子", "外套",
"涼鞋", "襯衫", "運動鞋", "包", "踝靴"]
model = keras.models.Sequential([
keras.layer.Flatten(input_shape=[28, 28)。
keras.layer.Dense(300, activation="relu") 。
keras.layer.Dense(100, activation="relu") 。
keras.layer.Dense(10, activation="softmax")
])
model.compile(loss="sparse_categorical_crossentropy",
optimizer='sgd',
metrics=['accuracy'] )
history = model.fit(X_train, y_train, epochs=50, validation_data=(X_valid, y_valid))
隨著歷時的發展,我們應該看到準確度的提高,正如書中所指出的:
隨著歷時的發展,我們應該看到準確度的提高。
。
在55000樣本上訓練,在5000樣本上驗證
紀元1/30。
55000/55000 [==========] - 3s 55us/sample - loss: 1.4948 - acc: 0.5757 - val_loss: 1.0042 - val_acc: 0.7166[/span
紀元2/30。
55000/55000 [==========] - 3s 55us/sample - loss: 0.8690 - acc: 0.7318 - val_loss: 0.7549 - val_acc: 0.7616。
[...]
紀元50/50。
55000/55000 [==========] - 4s 72us/sample - loss: 0.3607 - acc: 0.8752 - acc: 0.8752 -val_loss: 0.3706 - val_acc: 0.8728 -val_loss.
但是,當我運行時,我得到了以下結果:
。
Epoch 1/30。
1719/1719 [==============================] - 3s 2ms/step - loss: 0.0623 -精確度。0.1005 - val_loss: 0.0011 - val_accuracy: 0.09142/30。
1719/1719 [==============================] - 3s 2ms/step - loss: 8.7637e-04 -精確度。0.1011 - val_loss: 5.2079e-04 - val_accuracy: 0.0914 - val_accuracy: 0.0914
紀元3/30
1719/1719 [==============================] - 3s 2ms/step - loss: 4.9200e-04 -精確度。0.1019 - val_loss: 3.4211e-04 - val_accuracy: 0.0914。
[...]
紀元49/50。
1719/1719 [==============================] - 3s 2ms/step - loss: 3.1710e-05 -精確度。0.0992 - val_loss: 3.2966e-05 - val_accuracy: 0.0914 - val_accuracy: 0.0914
Epoch 50/50
1719/1719 [==============================] - 3s 2ms/step - loss: 2.7711e-05 -精確度。0.1022 - val_loss: 3.1833e-05 - val_accuracy: 0.0914。
因此,正如你所看到的,再現得到了一個強烈的較低的準確性,并沒有改善:它保持在0.0914而不是0.8728。
我的TensorFlow安裝、設定甚至代碼中都有問題嗎?
uj5u.com熱心網友回復:
你不能分割y,如y_valid, y_train = y_train_full[:5000] / 255.0, y_train_full[5000:] / 255.0。完成的代碼如下:
import tensorflow as tf
from tensorflow import keras
tf.__version__
語法和語法的關系
fashion_mnist = keras.datasets.fashion_mnist
(X_train_full, y_train_full), (X_test, y_test) = fashion_mnist.load_data()
X_train_full = X_train_full / 255.0。
X_test = X_test / 255.0
class_names = ["T恤/上衣", "長褲", "套頭衫", "裙子", "外套"。
"涼鞋", "襯衫", "運動鞋", "包", "踝靴"]
model = keras.models.Sequential([
keras.layer.Flatten(input_shape=(28, 28)。
keras.layer.Dense(128, activation="relu") 。
keras.layer.Dense(10, activation="softmax")
])
model.compile(loss="sparse_categorical_crossentropy",
optimizer='sgd',
metrics=['accuracy'] )
history = model.fit(X_train_full, y_train_full, epochs=5, validation_data=(X_test, y_test))
它將給出這樣的答案:
Epoch 1/5。
1875/1875 [==============================] - 2s 1ms/step - loss: 0.9880 -精確度。0.6923 - val_loss: 0.5710 - val_accuracy: 0.8054 - val_accuracy:
紀元2/5。
1875/1875 [==============================] - 2s 944us/step - loss: 0.5281 -精確度。0.8227 - val_loss: 0.5112 - val_accuracy: 0.82283/5。
1875/1875 [==============================] - 2s 913us/step - loss: 0.4720 -精確度。0.8391 - val_loss: 0.4782 - val_accuracy: 0.8345 - val_accuracy.
紀元4/5。
1875/1875 [==============================] - 2s 915us/step - loss: 0.4492 -精確度。0.8462 - val_loss: 0.4568 - val_accuracy: 0.8410 - val_accuracy.
紀元5/5。
1875/1875 [==============================] - 2s 935us/step - loss: 0.4212 -精確度。0.8550 - val_loss: 0.4469 - val_accuracy: 0.8444 - val_accuracy:
另外,優化器adam可能比sgd得到更好的結果。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/310711.html
標籤:
