我似乎无法解决这个问题,因为我是tensorflow的新手,我认为问题在于图形不匹配 但是解决不了,请帮忙。我想解决这个问题,因为我将在android应用程序中使用它
定义占位符:
x = tf.placeholder(tf.float32,shape=[None,80,80,3])
y_true = tf.placeholder(tf.float32,shape=[None,4])
CNN层:
%%time
#Changing settings for GPU running.
config = tf.ConfigProto(allow_soft_placement=True)
config.gpu_options.allow_growth = True
config.gpu_options.allocator_type = 'BFC'
#Training and saving the result
with tf.Session(config=config) as sess:
sess.run(init)
summary_writer = tf.summary.FileWriter(TRAIN_DIR, graph=tf.get_default_graph())
for i in range(epochs):
for j in range(0,steps,step_size):
_ , c , summary,d = sess.run([train,cross_entropy,merged_summary_op,acc],feed_dict={x:X[j:j+step_size] , y_true:Y[j:j+step_size] ,hold_prob1:0.5,hold_prob2:0.5,hold_prob3:0.5,hold_prob4:0.5})
summary_writer.add_summary(summary, i * total_batch + j)
acc_train.append(d)
mean_of_cross_entropy = sess.run(cross_entropy,feed_dict={x:cv_x,y_true:cv_y ,hold_prob1:1.0,hold_prob2:1.0,hold_prob3:1.0,hold_prob4:1.0})
mean_of_acc = sess.run(acc,feed_dict={x:cv_x ,y_true:cv_y ,hold_prob1:1.0,hold_prob2:1.0,hold_prob3:1.0,hold_prob4:1.0})
cross_entropy_list.append(mean_of_cross_entropy)
acc_list.append(mean_of_acc)
print(i,mean_of_cross_entropy,mean_of_acc)
saver.save(sess, "C:\\Users\\blessie\\Desktop\DATASETS - TOMATO LEAF DISEASE\\Models\\CNN_MC.ckpt")
print("test accuracy = ",np.mean([sess.run(acc,feed_dict={x:test_x[:230],y_true:test_y[:230] ,hold_prob1:1.0,hold_prob2:1.0,hold_prob3:1.0,hold_prob4:1.0}),sess.run(acc,feed_dict={x:test_x[230:460],y_true:test_y[230:460] ,hold_prob1:1.0,hold_prob2:1.0,hold_prob3:1.0,hold_prob4:1.0}),sess.run(acc,feed_dict={x:test_x[460:],y_true:test_y[460:] ,hold_prob1:1.0,hold_prob2:1.0,hold_prob3:1.0,hold_prob4:1.0})]))
print("cross_entropy loss = ",np.mean([sess.run(cross_entropy,feed_dict={x:test_x[:230],y_true:test_y[:230] ,hold_prob1:1.0,hold_prob2:1.0,hold_prob3:1.0,hold_prob4:1.0}),sess.run(cross_entropy,feed_dict={x:test_x[230:460],y_true:test_y[230:460] ,hold_prob1:1.0,hold_prob2:1.0,hold_prob3:1.0,hold_prob4:1.0}),sess.run(cross_entropy,feed_dict={x:test_x[460:],y_true:test_y[460:] ,hold_prob1:1.0,hold_prob2:1.0,hold_prob3:1.0,hold_prob4:1.0})]))
运行代码并预处理数据后,我得到一个值错误,指出:
ValueError:无法为具有形状“(?,4)”的张量“占位符_1:0”输入形状(230,)的值
如何解决此问题/错误
您还没有给出完整的代码,但是从错误消息来看,您的
y_true
占位符似乎提供了形状为[230]
的数据,基本上是类型为[None]
。因此,将y_true
更改为应该可以解决此特定问题:但是您之前已经在代码中使用了
y_true
。因此,cv_y
的形状是否正确地作为[None, 4]
馈送我能猜到的另一件特别的事情是,您已经向
cv_y
提供了一个热编码值,但在随后的代码行中您没有。因此,您可以按如下方式更改代码:现在,您必须更改
cv_y
,然后才能将其作为feed_dict
传递相关问题 更多 >
编程相关推荐