首页 文章

更改MNIST Tensorflow的 class 数

提问于
浏览
0

嗨,我试图使用MNIST和softmax调整Tensorflow的初学者教程 . 在本教程中,您有10个clases(数字0-9) . 现在,使用不同的数据集(EMNIST),我有62个数字和字母类 . 我在原始模型中的模型是:

x = tf.placeholder(tf.float32, [None, 784])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
y = tf.matmul(x, W) + b`

其中784代表28x28图像的总像素,10代表类的数量 . 我想要的是:

x = tf.placeholder(tf.float32, [None, 784])
W = tf.Variable(tf.zeros([784, 62]))
b = tf.Variable(tf.zeros([62]))
y = tf.matmul(x, W) + b`

62课程 . 但当我到达代码的这一部分时,下一批被调用执行:

for _ in range(1000):
batch_xs, batch_ys = mnist.train.next_batch(100)
sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})

我收到此错误... Traceback(最近一次调用最后一次):

File "calligraphy.py", line 77, in <module>
    tf.app.run(main=main, argv=[sys.argv[0]] + unparsed)
  File "C:\Users\Willy Barales\Anaconda3\lib\site-packages\tensorflow\python\platform\app.py", line 48, in run
    _sys.exit(main(_sys.argv[:1] + flags_passthrough))
  File "calligraphy.py", line 64, in main
    sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys})
  File "C:\Users\Willy Barales\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 789, in run
    run_metadata_ptr)
  File "C:\Users\Willy Barales\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 975, in _run
    % (np_val.shape, subfeed_t.name, str(subfeed_t.get_shape())))
ValueError: Cannot feed value of shape (100, 10) for Tensor 'Placeholder_1:0', which has shape '(?, 62)'

有关如何更改此示例的数据集的任何想法?我是否必须在mnist.py文件中更改实现.next_batch()的内容?

据我所知,EMNIST的格式与MNIST完全相同 . 提前致谢 .

有关新数据集的信息:http://biometrics.nist.gov/cs_links/EMNIST/Readme.txt

1 回答

  • 0

    我所要做的就是在mnist.py文件中编辑从标签创建一个热矢量的部分,因为这些是与batch_ys相对应的部分,这要归功于Neijla的启发 .

    def extract_labels(f, one_hot=False, num_classes=62)
    

    当然,正如我在我的问题中首先提到的那样,改变模型中的类的数量 .

相关问题