簡體   English   中英

在 Keras 中使用 MNIST 數據

[英]Using MNIST data with Keras

我目前正在使用 MNIST 數據作為使用 numpy 和 tensorflow 課程的一部分。 我正在運行他們在課程中提供的代碼,在運行這段代碼時,我注意到來自 tensorflow 的一些警告:

from tensorflow.examples.tutorials.mnist import input_data

mnist = input_data.read_data_sets("../data/mnist_data/", one_hot=True)

我查看了文檔並了解到這已被棄用,應該改用來自keras MNIST。 所以我把上面的代碼改成了這樣

from keras.datasets import mnist
from keras.models import Sequential, load_model
from keras.layers.core import Dense, Dropout, Activation
from keras.utils import np_utils

(X_train, y_train), (X_test, y_test) = mnist.load_data()

我現在的問題是在課程材料中他們使用了這個功能:

training_digits, training_labels = mnist.train.next_batch(5000)

該函數next_batch()在 keras 中不可用,並且原始 MNIST 數據集非常大。 keras 有沒有聰明的方法來解決這個問題?

提前謝謝了!

您可以設置 batch_size 並使用單次迭代器(),如此處描述的Keras Mnist 文檔

使用 Keras 中的 Sequential()。 這個 Sequential() 有一個叫做 fit() 的方法,你可以在參數中設置 batchSize。參見文檔: keras Sequential

問題是您的教程使用的 API 與大多數當前教程中使用的 keras 數據集 API 不同。 在使用keras.dataset API 時,您正試圖“跨越流”。

你(廣義上)有三個選擇:

選項1

只需堅持使用現有教程並忽略棄用警告。 超級簡單,但除非您打算稍后學習,否則您可能會錯過 keras api(新默認值)的好處

選項 2

完全切換到keras API 並找到一個新教程。 是一個只有幾行代碼的 MNIST 示例:

mnist = tf.keras.datasets.mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train, x_test = x_train / 255.0, x_test / 255.0

model = tf.keras.models.Sequential([
  tf.keras.layers.Flatten(input_shape=(28, 28)),
  tf.keras.layers.Dense(128, activation='relu'),
  tf.keras.layers.Dropout(0.2),
  tf.keras.layers.Dense(10, activation='softmax')
])

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


model.fit(x_train, y_train, epochs=5)

model.evaluate(x_test, y_test)

如果它對您可用,這是我推薦的選項。 keras是新的默認值。 也許這不是一個選擇,或者您想堅持原來的課程,但我當然建議您盡快熟悉keras

選項 3

找到一種成功“跨越河流”的方法。

這更棘手,但肯定可以做到。 keras.dataset的 keras.dataset 畢竟只是一個大數組。 您可以查看數據集 API(特別是load_from_tensor()load_from_tensor_slices() )。 但是,這些選項需要一些爭論,因為本質上(正如您發現的那樣)從新方法返回的數據集與從舊方法返回的數據集類型不同。

更新:

nag 的答案中鏈接提供了一個我以前不知道的綜合示例!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM