به بخش پرسش و پاسخ یادگیری عمیق خوش آمدید,
این نسخه آزمایشی سایت است.
لطفا به نکات زیر توجه کنید:
  • برای ارتباط با مدیران میتوانید از صفحه مدیران اقدام کنید.
  • سوال و جواب ها باید به زبان فارسی باشند. استفاده از زبان انگلیسی یا فینگلیش برای پاسخ دادن مجاز نیست.
  • لطفا بعد از پرسش سوال لینک سوال خود را در گرو تلگرام (Iran Deep Learning Group) معرفی کنید تا سریعتر به جواب برسید. برای دسترسی به آخرین لینک از منابع یادگیری استفاده کنید
  • لطفا بجای عکس از متن استفاده کنید. اگر متون طولانی هستند از سایت pastebin.com برای اپلود استفاده کرده و لینک حاصل را در سوال خود قرار دهید. برای قرار دادن تصویر ، از بخش ارسال تصویر ادیتور سایت استفاده کنید.
  • بعد از دریافت پاسخ، بهترین پاسخ را از طریق کلیک بر روی علامت تیک انتخاب کنید
  • اگر با خطا و یا مشکلی مواجه شدید از بخش تماس با ما در انتهای صفحه و یا ایمیل Coderx7@gmail.com موضوع را اطلاع دهید.

با تشکر

دسته بندی ها

0 امتیاز

با درود و احترام؛
من برنامه زیر رو نوشتم:

https://pastebin.com/gUqam4eb

و خطای برنامه به صورت زیر بود:

https://pastebin.com/9DzNrHg1

یعنی

ValueError: Cannot feed value of shape (100, 20, 20, 3) for Tensor 'Placeholder:0', which has shape '(?, 1200)'

در صورت امکان راهنمایی بفرمایید.

توسط (145 امتیاز)

2 پاسخ

+1 امتیاز

سلام
شما باید ابعاد تصاویر ورودی که به placeholder ورودی (که همون x هست) قرار داده میشه ، رو به ابعاد اون placeholder دربیارید یعنی تصاویر رو با استفاده از تابع reshape خطی کنید.
با استفاده از این کد:

array_batch_xs= np.reshape(batch_xs, [-1, img_size ]) ...............ddd
feed_dict={x: array_batchxs, y: batch_ys}........ddd

توسط (105 امتیاز)
سپاس از راهنمایی جنابعالی....

من برنامه رو به صورت زیر تغییر دادم

https://pastebin.com/prKYX7Aw
و قسمت آخر رو به صورت زیر اصلاح کردم:

for _ in range(1000):
 batch_size=100

 batch_xs, batch_ys = next_batch(100,training_images,training_labels)


array_batch_xs= np.reshape(batch_xs, [-1, img_size ])
array_batch_ys= np.reshape(batch_ys, [-1, img_size ])
  
    
sess.run(train_step, feed_dict={x: array_batch_xs, y: array_batch_ys})
correct_prediction = tf.equal(tf.argmax(y,1), tf.argmax(y_,1))
correct_prediction = tf.equal(training_images, training_labels)
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float64))
print(sess.run(accuracy, feed_dict={x: test_images, y_: test_labels}))

اما خطای برنامه به صورت زیر هست:
https://pastebin.com/Qah7grws


و خطای زیر :
ValueError: cannot reshape array of size 100 into shape (1200)

ممکنه بفرمایید اشتباهم کجاست؟
سپاس
+1 امتیاز

سلام
توی کد شما ، x به این صورت تعریف شده:

x = tf.placeholder(tf.float64, [None, img_size])

که img_size هم قبلش ، 20x20x3 هست که در واقع، توی گراف شما، انتظار می ره که ورودی x به صورت (None,1200) باشه
اما چون ورودی های شما به صورت تصویر هستن، این خط :

 batch_xs, batch_ys = next_batch(100,training_images,training_labels)

به این صورت عمل می کنه که به شما یه سری داده میده به اندازه (100,20,20,3) که به اندازه (None,1200) نمی خوره

چون شبکتون رو طوری تعریف کردید که انتظار ورودی با 1200 بعد رو داره، بهتره که خوده شبکه رو فعلا دست نزنید و batch_xs رو تغییر اندازه بدید. یعنی اینطوری :

batch_xs = numpy.reshape(batch_xs,[-1, 1200])

البته اینطوری هم کد نوشتن خوب نیست و اگه اندازه دیتا هاتون تغییر کنه باید چندجا رو تغییر بدید. مثلا یه روش بهتر نوشتن خط بالا اینه که اینطوری بنویسید

batch_size=100
batch_xs, batch_ys = next_batch(batch_size,training_images,training_labels)
batch_xs = numpy.reshape(batch_xs,[batch_size, -1])
توسط (1.6k امتیاز)
ویرایش شده توسط
سپاس از صبرو حوصله جنابعالی...
من برنامه رو به صورت زیر تغییر دادم...
https://pastebin.com/yVdffPzC

و به این صورت اصلاح کردم

 batch_xs, batch_ys = next_batch(100,training_images,training_labels)


array_batch_xs= np.reshape(batch_xs, [-1, img_size ])
  
    
sess.run(train_step, feed_dict={x: array_batch_xs, y: batch_ys})

اما بازهم این خطا رو برای من میده...
https://pastebin.com/BHcmucp4

ValueError: setting an array element with a sequence.

آیا به این که در محیط ویندوز هستم مربوط میشه؟
نه این مشکل معمولا به خاطر اینه که tensorflow نتونسته درست چیزی که به عنوان ورودی بهش دادید رو تبدیل کنه به tensor و ربطی به محیط ویندوز نداره.
اون تابع next_batch که نوشتید، میشه ببینید چه چیزی به عنوان خروجی میده، مثلا سایز هم خروجی تصاویر، هم سایز لیبیل ها
یه چیزه دیگه رو هم که لطفا تست کنید اینه که خروجی next_batch برای x و y، برای هر تصویر اندازه مختلفی نداشته باشه.
ممنون از راهنمایی های جنابعالی...
حقیقتش من می خواستم با پایگاه داده خودم برنامه ای مشابه MNIST for beginner بنویسم و تابع next_batch رو خودم تعریف کردم....درحقیقت اونطوری که من متوجه شدم در next_batch فرایند اموزش در هرمرحله قسمتی از ورودی یا به اصطلاح batch  را آموزش میده...
چطورمیتونم کلا این next_batch  رو حذف کنم؟
من هنوز نتونستم برنامه ساده برای پایگاه داده خودم بنویسم..
سپاس مجدد
...