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: Kennzeichnung Ausgabe
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].
Bitte sag mir, was mein Fehler, ich glaube, ich brauche zwei Etiketten zu einer Zeit, füttern, aber es all 5 zu einem Zeitpunkt stattfindet. Wie kann ich Etiketten separat batchen?
danke, arbeitete wie ein Charme. Du bist ein wahrer Held! Die Leute markierten diese Frage als "außer Betrieb gesetzt", aber ich habe nie das Debuggen verlangt, aber ich wollte meine Zweifel beseitigen, also dachte ich, dass die Veröffentlichung meines Rohcodes den Leuten helfen würde, meine Situation zu verstehen. Ich schätze deine Zeit sehr! Danke noch einmal :) –