Tensorflow:标签问题

Tensorflow:标签问题,tensorflow,Tensorflow,回溯(最近一次呼叫最后一次): 文件“test.py”,第56行,在 logits=logits,labels=onehot) ValueError:两个形状中的维度0必须相等,但对于输入形状为[2,2],[5,2]的“SoftmaxCrossEntropyWithLogits”(op:“SoftmaxCrossEntropyWithLogits”)而言,维度0为2和5 请告诉我什么是我的错误,我想我需要饲料2标签的时间,但它是采取所有5在一个时间。如何单独批处理标签 您正在创建输入批次,但不

回溯(最近一次呼叫最后一次): 文件“test.py”,第56行,在 logits=logits,labels=onehot)

ValueError:两个形状中的维度0必须相等,但对于输入形状为[2,2],[5,2]的“SoftmaxCrossEntropyWithLogits”(op:“SoftmaxCrossEntropyWithLogits”)而言,维度0为2和5

请告诉我什么是我的错误,我想我需要饲料2标签的时间,但它是采取所有5在一个时间。如何单独批处理标签

您正在创建输入批次,但不是标签批次。也可以尝试给标签批次喂食。为标签创建占位符:

labels=tf.placeholder(tf.int32,[None])
#保持tf.one_的热度。
onehot=tf.one\U hot(标签,深度=2)
后来:

all_标签=[1,1,1,0,0]
开始=0
将tf.Session()作为s:
# ...
对于步进范围(40):
t=所有标签[开始:开始+2]#抓取下一批标签
开始+=2
如果开始>长度(所有标签):
开始=0#超出结束时重置为列表的开始
sess.run(train_op,feed_dict={labels:t})
老实说,我会以同样的方式处理您的数据批和标签批,但我在想如何让
tf.train.batch
处理
tf.one\u hot
的输出时遇到了困难,我在运行原始标签数组上的
tf.train.batch
时遇到问题,然后将其传递给
tf.one\u hot

您正在创建输入批次,但不是标签批次。也可以尝试给标签批次喂食。为标签创建占位符:

labels=tf.placeholder(tf.int32,[None])
#保持tf.one_的热度。
onehot=tf.one\U hot(标签,深度=2)
后来:

all_标签=[1,1,1,0,0]
开始=0
将tf.Session()作为s:
# ...
对于步进范围(40):
t=所有标签[开始:开始+2]#抓取下一批标签
开始+=2
如果开始>长度(所有标签):
开始=0#超出结束时重置为列表的开始
sess.run(train_op,feed_dict={labels:t})

老实说,我会以同样的方式处理您的数据批和标签批,但我在想如何让
tf.train.batch
处理
tf.one\u hot
的输出时遇到了困难,我在您的原始标签数组上运行
tf.train.batch
,然后将其传递给
tf时遇到了问题。谢谢,这非常有效。你真是个英雄!人们将这个问题标记为“暂停作为非主题”,但我从未要求调试,但我想澄清我的疑问,所以我认为发布我的原始代码可以帮助人们了解我的情况。我真的很感谢你的时间!再次感谢:)谢谢,工作很有魅力。你真是个英雄!人们将这个问题标记为“暂停作为非主题”,但我从未要求调试,但我想澄清我的疑问,所以我认为发布我的原始代码可以帮助人们了解我的情况。我真的很感谢你的时间!再次感谢:)
import tensorflow as tf
import numpy as np
import glob
fq=glob.glob("*.jpg")
filename_queue = tf.train.string_input_producer(fq)
reader = tf.WholeFileReader()
key, value = reader.read(filename_queue)
my_img = tf.image.decode_jpeg(value,channels=3) 
my_img=tf.cast(my_img,tf.float32)
resized_image = tf.image.resize_images(my_img, [50, 50])


labels=[1,1,1,0,0]
onehot = tf.one_hot(labels, depth=2)



image_batch = tf.train.batch([resized_image], batch_size=2)

# layer 1
w1 = tf.Variable(tf.truncated_normal([2, 2, 3, 52], stddev=0.01))
b1= tf.Variable(tf.constant(0.01, shape = [52]))
layer1=tf.nn.conv2d(image_batch,w1,[1,1,1,1],padding='SAME')
act1=tf.nn.relu(tf.nn.bias_add(layer1,b1))
pool1=tf.layers.max_pooling2d(act1,2,2)

# layer 2
b2= tf.Variable(tf.constant(0.01, shape = [104]))
w2=tf.Variable(tf.truncated_normal([2, 2,52, 104], stddev=0.01))
layer2=tf.nn.conv2d(pool1,w2,[1,1,1,1],padding='SAME')
act2=tf.nn.relu(tf.nn.bias_add(layer2,b2))
pool2=tf.layers.max_pooling2d(act2,2,2)

#fully connected layer
b3= tf.Variable(tf.constant(0.01, shape = [300]))
w3=tf.Variable(tf.truncated_normal([12*12*104, 300], stddev=0.01))
fcl1=tf.reshape(pool2,[-1,12*12*104])
fcl1 = tf.add(tf.matmul(fcl1, w3), b3)
fcl1 = tf.nn.relu(fcl1)
fcl1 = tf.nn.dropout(fcl1,0.5)

#output layer
b_out=b3= tf.Variable(tf.constant(0.01, shape = [2]))
w_out=tf.Variable(tf.truncated_normal([300, 2], stddev=0.01))
ans=tf.add(tf.matmul(fcl1,w_out),b_out)


#traning , loss , optimizer
logits = ans
prediction = tf.nn.softmax(logits)  
loss_op = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(
logits=logits, labels=onehot))
optimizer = tf.train.AdamOptimizer(learning_rate=0.001)
train_op = optimizer.minimize(loss_op)




with tf.Session() as s:
    s.run(tf.global_variables_initializer())
    coord = tf.train.Coordinator()
    threads = tf.train.start_queue_runners(coord=coord)
    for step in range(1, 40):
        s.run(train_op)
        print(step,s.run(loss_op))
    coord.request_stop()
    coord.join(threads)