Python Tensorflow:MNIST的无效辩论对手[55000]对[10000]
我正在处理此演示文稿中的代码,并收到以下错误:Python Tensorflow:MNIST的无效辩论对手[55000]对[10000],python,tensorflow,Python,Tensorflow,我正在处理此演示文稿中的代码,并收到以下错误:InvalidArgumentError(回溯请参见上文):不兼容的形状:[55000]与[10000] 我已经解决了一些关于张量形状/维度的错误,但不知道如何具体理解,更不用说纠正了 我是tf的新手,非常感谢您的建议,以下是代码: # 1 ~ import tf + data import tensorflow as tf from tensorflow.examples.tutorials.mnist import input_data mni
InvalidArgumentError(回溯请参见上文):不兼容的形状:[55000]与[10000]
我已经解决了一些关于张量形状/维度的错误,但不知道如何具体理解,更不用说纠正了
我是tf的新手,非常感谢您的建议,以下是代码:
# 1 ~ import tf + data
import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets("MNIST_data/", one_hot=True)
#2 ~ paras + init
X = tf.placeholder(tf.float32, [None, 784])
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))
init = tf.initialize_all_variables()
#3 ~ model + correct answers
Y = tf.nn.softmax(tf.matmul(X, W) + b)
Y_ = tf.placeholder(tf.float32, [None, 10]) # one-hot encoding
#4 ~ loss function
cross_entropy = -tf.reduce_sum(Y_ * tf.log(Y))
#5 ~ correct answer + % accuracy
is_correct = tf.equal(tf.argmax(Y, 1), tf.argmax(Y_, 1)) # one-hot decoding
accuracy = tf.reduce_mean(tf.cast(is_correct, tf.float32))
#6 ~ optimizer and training step
optimizer = tf.train.GradientDescentOptimizer(0.003) # learning-rate
train_step = optimizer.minimize(cross_entropy)
#7 ~ session and training loop
sess = tf.Session()
sess.run(init)
for i in range(1000):
# load a batch of images and correct answers
batch_X, batch_Y = mnist.train.next_batch(100)
train_data = {X: batch_X, Y_: batch_Y}
# train
sess.run(train_step, feed_dict=train_data)
# success?
a,c = sess.run([accuracy, cross_entropy], feed_dict=train_data)
# success on test data?
test_data = {X: mnist.train.images, Y_: mnist.test.labels}
a,c = sess.run([accuracy, cross_entropy], feed_dict=test_data)
总错误输出为:
Traceback (most recent call last):
File "/Users/joelmcleod/anaconda3/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1021, in _do_call
return fn(*args)
File "/Users/joelmcleod/anaconda3/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1003, in _run_fn
status, run_metadata)
File "/Users/joelmcleod/anaconda3/lib/python3.5/contextlib.py", line 66, in __exit__
next(self.gen)
File "/Users/joelmcleod/anaconda3/lib/python3.5/site-packages/tensorflow/python/framework/errors_impl.py", line 469, in raise_exception_on_not_ok_status
pywrap_tensorflow.TF_GetCode(status))
tensorflow.python.framework.errors_impl.InvalidArgumentError: Incompatible shapes: [55000] vs. [10000]
[[Node: Equal = Equal[T=DT_INT64, _device="/job:localhost/replica:0/task:0/cpu:0"](ArgMax, ArgMax_1)]]
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "deep_nn1.py", line 71, in <module>
a,c = sess.run([accuracy, cross_entropy], feed_dict=test_data)
File "/Users/joelmcleod/anaconda3/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 766, in run
run_metadata_ptr)
File "/Users/joelmcleod/anaconda3/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 964, in _run
feed_dict_string, options, run_metadata)
File "/Users/joelmcleod/anaconda3/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1014, in _do_run
target_list, options, run_metadata)
File "/Users/joelmcleod/anaconda3/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1034, in _do_call
raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.InvalidArgumentError: Incompatible shapes: [55000] vs. [10000]
[[Node: Equal = Equal[T=DT_INT64, _device="/job:localhost/replica:0/task:0/cpu:0"](ArgMax, ArgMax_1)]]
Caused by op 'Equal', defined at:
File "deep_nn1.py", line 47, in <module>
is_correct = tf.equal(tf.argmax(Y, 1), tf.argmax(Y_, 1)) # one-hot decoding
File "/Users/joelmcleod/anaconda3/lib/python3.5/site-packages/tensorflow/python/ops/gen_math_ops.py", line 728, in equal
result = _op_def_lib.apply_op("Equal", x=x, y=y, name=name)
File "/Users/joelmcleod/anaconda3/lib/python3.5/site-packages/tensorflow/python/framework/op_def_library.py", line 759, in apply_op
op_def=op_def)
File "/Users/joelmcleod/anaconda3/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", line 2240, in create_op
original_op=self._default_original_op, op_def=op_def)
File "/Users/joelmcleod/anaconda3/lib/python3.5/site-packages/tensorflow/python/framework/ops.py", line 1128, in __init__
self._traceback = _extract_stack()
InvalidArgumentError (see above for traceback): Incompatible shapes: [55000] vs. [10000]
[[Node: Equal = Equal[T=DT_INT64, _device="/job:localhost/replica:0/task:0/cpu:0"](ArgMax, ArgMax_1)]]
回溯(最近一次呼叫最后一次):
文件“/Users/joelmcleod/anaconda3/lib/python3.5/site-packages/tensorflow/python/client/session.py”,第1021行,在调用中
返回fn(*args)
文件“/Users/joelmcleod/anaconda3/lib/python3.5/site packages/tensorflow/python/client/session.py”,第1003行,在
状态,运行(元数据)
文件“/Users/joelmcleod/anaconda3/lib/python3.5/contextlib.py”,第66行,在退出时__
下一个(self.gen)
文件“/Users/joelmcleod/anaconda3/lib/python3.5/site packages/tensorflow/python/framework/errors\u impl.py”,第469行,处于引发异常打开状态
pywrap_tensorflow.TF_GetCode(状态))
tensorflow.python.framework.errors\u impl.InvalidArgumentError:不兼容的形状:[55000]与[10000]
[[Node:Equal=Equal[T=DT_INT64,_device=“/job:localhost/replica:0/task:0/cpu:0”](ArgMax,ArgMax_1)]]
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“deep_nn1.py”,第71行,在
a、 c=测试运行([精度、交叉熵],输入数据=测试数据)
文件“/Users/joelmcleod/anaconda3/lib/python3.5/site packages/tensorflow/python/client/session.py”,第766行,正在运行
运行_元数据_ptr)
文件“/Users/joelmcleod/anaconda3/lib/python3.5/site packages/tensorflow/python/client/session.py”,第964行,正在运行
提要(dict字符串、选项、运行元数据)
文件“/Users/joelmcleod/anaconda3/lib/python3.5/site packages/tensorflow/python/client/session.py”,第1014行,在运行中
目标\u列表、选项、运行\u元数据)
文件“/Users/joelmcleod/anaconda3/lib/python3.5/site-packages/tensorflow/python/client/session.py”,第1034行,在
提升类型(e)(节点定义、操作、消息)
tensorflow.python.framework.errors\u impl.InvalidArgumentError:不兼容的形状:[55000]与[10000]
[[Node:Equal=Equal[T=DT_INT64,_device=“/job:localhost/replica:0/task:0/cpu:0”](ArgMax,ArgMax_1)]]
由op“Equal”引起,定义为:
文件“deep_nn1.py”,第47行,在
是否正确=tf.equal(tf.argmax(Y,1),tf.argmax(Y,1))#一个热解码
文件“/Users/joelmcleod/anaconda3/lib/python3.5/site packages/tensorflow/python/ops/gen_math_ops.py”,第728行,等号
结果=_op_def_lib.apply_op(“相等”,x=x,y=y,name=name)
文件“/Users/joelmcleod/anaconda3/lib/python3.5/site packages/tensorflow/python/framework/op_def_library.py”,第759行,在apply_op
op_def=op_def)
文件“/Users/joelmcleod/anaconda3/lib/python3.5/site packages/tensorflow/python/framework/ops.py”,第2240行,在create_op中
初始值=自身值。\默认值\初始值,初始值=初始值)
文件“/Users/joelmcleod/anaconda3/lib/python3.5/site packages/tensorflow/python/framework/ops.py”,第1128行,在__
self.\u traceback=\u extract\u stack()
InvalidArgumentError(回溯见上文):不兼容的形状:[55000]与[10000]
[[Node:Equal=Equal[T=DT_INT64,_device=“/job:localhost/replica:0/task:0/cpu:0”](ArgMax,ArgMax_1)]]
您在此行中输入的是培训数据(行数:55000),而不是测试数据(行数:10000):
test_data = {X: mnist.train.images, Y_: mnist.test.labels}
只需使用以下工具进行修复:
test_data = {X: mnist.test.images, Y_: mnist.test.labels}
非常高兴,奥利弗