加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – TensorFlow无法为Tensor’占位符:0’提供形状值(100,

发布时间:2020-12-20 13:19:34 所属栏目:Python 来源:网络整理
导读:我正在学习TensorFLow.因此,要了解如何制作某些内容,我尝试从源代码中复制一些代码并执行它.但我正在发出错误信息.所以我尝试了一些来自这个网站的解决方案,但它不起作用(我在评论中保留了我的测试). """programme 1 """import tensorflow as tf import nump
我正在学习TensorFLow.因此,要了解如何制作某些内容,我尝试从源代码中复制一些代码并执行它.但我正在发出错误信息.所以我尝试了一些来自这个网站的解决方案,但它不起作用(我在评论中保留了我的测试).

"""programme 1 """
import tensorflow as tf 
import numpy as np

from tensorflow.examples.tutorials.mnist import input_data
mnist = input_data.read_data_sets('MNIST_data',one_hot=True)





X = tf.placeholder(tf.float32,[None,28,1]) #28 * 28 taille image 1 = 1pixel car noir et blanc "X" valeur
W = tf.Variable(tf.zeros([784,10])) # 28*28 = 784,10 -> 0 à 9  "W" = weight = poid
b = tf.Variable(tf.zeros([10])) #chiffre de 0 à 9 a reconnaitre "b" = constante 
init = tf.initialize_all_variables()

#model
Y = tf.nn.softmax(tf.matmul(tf.reshape(X,[-1,784]),W) + b) #fonction "matmul": produit matriciel "-1": reussite obligatoire

#Place holder
Y_ = tf.placeholder(tf.float32,10])

#loss function
cross_entropy = -1 * tf.reduce_sum(Y_ * tf.log(Y)) #formule

# % of correct annwer found in batch
is_correct = tf.equal(tf.argmax(Y,1),tf.argmax(Y_,1))
accuracy = tf.reduce_mean(tf.cast(is_correct,tf.float32))

#training step
optimizer = tf.train.GradientDescentOptimizer(0.003) #petit pas
train_step = optimizer.minimize(cross_entropy)

sess = tf.Session()
sess.run(init) 

for i in range(10000):
    #load batch of image and ocrrects answer
    batch_X,batch_Y = mnist.train.next_batch(100)
    batch_X = np.reshape(batch_X,(-1,784))
    #batch_Y = np.reshape(batch_Y,784))

    train_data = {X: batch_X,Y_: batch_Y}

    #train
    sess.run(train_step,feed_dict=train_data)

    a,c = sess.run([accuracy,cross_entropy],feed = train_data)

    test_data = {X:mnist.test.images,Y_:mnist.test.labels}
    a,feed = test_data)

日志:

Traceback (most recent call last):
  File "d:tensorflowtest1.py",line 46,in <module>
    sess.run(train_step,feed_dict=train_data)
  File "C:UsersProprietaireAppDataLocalProgramsPythonPython35libsite-packagestensorflowpythonclientsession.py",line 895,in run
    run_metadata_ptr)
  File "C:UsersProprietaireAppDataLocalProgramsPythonPython35libsite-packagestensorflowpythonclientsession.py",line 1100,in _run
    % (np_val.shape,subfeed_t.name,str(subfeed_t.get_shape())))
ValueError: Cannot feed value of shape (100,784) for Tensor 'Placeholder:0',which has shape '(?,1)'
2017-08-30 19:07:37.406994: W C:tf_jenkinshomeworkspacerel-winMwindowsPY35tensorflowcoreplatformcpu_feature_guard.cc:45] The TensorFlow library wasn't compiled to use AVX instructions,but these are available on your machine and could speed up CPU computations.

第46行是

sess.run(train_step,feed_dict=train_data)

我该怎么做才能解决此错误?

解决方法

您收到该错误是因为您正在喂食的形状与TensorFlow期望的形状之间存在不匹配.要解决此问题,您可能需要在占位符处重新整形数据:0即batch_X to
(?,1).例如,您将执行以下操作:

batch_X = np.reshape(batch_X,1))

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读