İnternet üzerindeki çeşitli örneklere dayanarak yaklaşık olarak AlexNet'i uygulayarak TensorFlow'u öğrenmeye çalışıyorum. Temel olarak, AlexNet örneğini 224x224 RGB görüntüler (28x28 gri tonlamalı görüntüler yerine) almak için here örneğini genişletmek ve çevrimiçi bulduğum diğer AlexNet uygulamaları başına bir kaç katman eklemek, çekirdek boyutlarını, adımları değiştirmek vb. TensorFlow hatası: günlükler ve etiketler aynı boyutta olmalıdır
eşleşmeyen şekil türü hataların bir numara ile çalıştın mı, ama bu beni şaşırtan:tensorflow.python.framework.errors.InvalidArgumentError: logits and labels must be same size: logits_size=dim { size: 49 } dim { size: 10 } labels_size=dim { size: 1 } dim { size: 10 }
[[Node: SoftmaxCrossEntropyWithLogits = SoftmaxCrossEntropyWithLogits[T=DT_FLOAT, _device="/job:localhost/replica:0/task:0/gpu:0"](Softmax, _recv_Placeholder_1_0/_13)]]
[[Node: gradients/Mean_grad/range_1/_17 = _Recv[client_terminated=false, recv_device="/job:localhost/replica:0/task:0/cpu:0", send_device="/job:localhost/replica:0/task:0/gpu:0", send_device_incarnation=1, tensor_name="edge_457_gradients/Mean_grad/range_1", tensor_type=DT_INT32, _device="/job:localhost/replica:0/task:0/cpu:0"]()]]
49 boyut özellikle şaşırtıcıdır. I 2'ye artırmak halinde ayıklama, benim parti boyutu I
sess.run(optimizer, feed_dict={x: batchImages, y: batchLabels, keepProb: P_DROPOUT})
geçmek x ve y I
elde şeklini log sonra 49 98.olur, şu anda 1
x shape: (1, 150528)
y shape: (1, 10)
Beklendiği gibi: 150528 = 224 * 224 RGB piksel ve etiketlerimi temsil eden tek bir sıcak vektör.
Bunu anlamak için herhangi bir yardımı takdir eder!
Güncelleme: Burada arıza sergileyen kodu:
https://gist.github.com/j4m3z0r/e70096d0f7bd4bd24c42
Müthiş. Teşekkürler. Bence bununla çalışabilirim. Çok takdir edildi. – j4m3z0r
Takip eden soru: Bu örnekte TensorFlow'un daha bilgilendirici bir şekilde başarısız olması için bir yol var mı? TF'nin, tam olarak işaretlediğiniz hatta uyumsuz şekiller olduğunu anlayabiliyormuş gibi görünüyor. – j4m3z0r
Bence sorun, joker karakter olarak davranan ve (bu durumda) önde gelen boyut hakkında bilgi kaybeden yeniden şekillendirmede -1 değeridir. Bu, TensorFlow'un programı çalıştırmadan gerçek şekli bilmesini zorlaştırır ve tek bir örneği daha küçük 49 örneğe böldüğünüz geçerli programlar bile olabilir. Bundan kaçınmak için toplu büyüklükte değişmez dönüşümleri daha iyi ifade etme yöntemlerine ihtiyacımız var ('tf.expand_dims()' ve 'tf.squeeze()' yardımcı olabilir fakat belki de bu durumda bir 'tf.flatten_dims()' ye ihtiyacımız var. – mrry