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)
Traceback (most recent call last): File "test.py", line 56, in logits=logits, labels=onehot))Tensorflow:ラベリング問題
ValueError: Dimension 0 in both shapes must be equal, but are 2 and 5 for 'SoftmaxCrossEntropyWithLogits' (op: 'SoftmaxCrossEntropyWithLogits') with input shapes: [2,2], [5,2].
何が私のミスです教えてください、私は一度に2つのラベルを供給する必要があると思うが、それは一度にすべての5を取っています。ラベルを個別にバッチするにはどうすればよいですか?
ありがとうございます、魅力的なように働いています。あなたは真の英雄です!人々はこの問題を「話題にはならない」とマークしましたが、デバッグを要求したことはありませんでしたが、疑問を解決したいので、生のコードを投稿することで人々が自分の状況を理解するのに役立ちます。本当にありがとう!再度、感謝します :) –