我正在学习Tensorflow,并想将next_batch
用于Fashion-MNIST数据集。但是我遇到了麻烦,因为Fashion-MNIST的数据集的格式与MNIST数据的格式不同。
对于常规MNIST,我们可以使用以下代码导入数据:
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data as ip
mnist = ip.read_data_sets("MNIST_data/", one_hot=True)
但是Tensorflow教程(URL:https://www.tensorflow.org/tutorials/keras/basic_classification)像这样导入Fashion-MNIST:
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
我想通过以下特定代码行使用Fashion-MNIST:
batch_xs, batch_ys = fashion_mnist.train.next_batch(100)
但是当我使用Tensorflow教程的数据导入方法尝试该操作时,出现此错误:
AttributeError: module 'tensorflow._api.v1.keras.datasets.fashion_mnist' has no attribute 'train'
我如何才能转换Fashion-MNIST或以其他方式导入它以使用此特定代码行?
答案 0 :(得分:4)
是的,问题在于Keras内置数据集不是使用IntPtr data0, data1, data2
定义的,但是如果您仍然想使用Dataset类(具有很多优点),则有几种方法(我知道)继续。
'Method's type signature is not PInvoke compatible
类实例,就像在this tutorial中所做的那样tensorflow-datasets
库,该库还具有Fashion MNIST,并且已经以Dataset API
的形式加载我希望这会有所帮助!
编辑:只是注意到它不能完全回答您的问题。您将无法使用正在讨论的特定代码行,因为函数Dataset
是在tf.Data.Datasets
模块中为mnist特别是here定义的。但是您可以使用next_batch
,它会遍历数据集并提供相同的功能。
答案 1 :(得分:2)
是的,时尚mnist没有next_batch或您可以使用生成器进行批处理迭代的东西:
fashion_mnist = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()
batchs=(train_images[i*100:(i+1)*100],train_labels[i*100:(i+1)*100] for i in range(int(len(train_labels)/100)))
batch_xs, batch_ys=batchs.__next__()
但是您不需要在keras中将数据拆分为批次。 fit()方法具有一个batch_size
参数