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

با تشکر

دسته بندی ها

0 امتیاز

با سلام واحترام....
من برنامه زیر رو در تنسور فلو نوشتم:

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
try:
    from scipy import misc
except ImportError:
    !pip install scipy
    from scipy import misc
 
training_size = 9
img_size = 20*20*3
training_data = np.empty(shape=(training_size, img_size))  
 
import glob
i = 0
for filename in glob.glob('D:/Minutia/*.jpg'):
    image = misc.imread(filename)
    training_data[i] = image.reshape(-1)
    i+=1
print(training_data[0].shape)
 
a = [0, 0, 0,1,1,1,2,2,2]
b = tf.one_hot(a,3)
sess = tf.Session()
sess.run(b)
from __future__ import division, print_function, absolute_import
 
import tflearn
from tflearn.layers.core import input_data, dropout, fully_connected
from tflearn.layers.conv import conv_2d, max_pool_2d
from tflearn.layers.normalization import local_response_normalization
from tflearn.layers.estimator import regression
 
network = input_data(shape=[None, 227, 227, 3])
network = conv_2d(network, 96, 11, strides=4, activation='relu')
network = max_pool_2d(network, 3, strides=2)
network = local_response_normalization(network)
network = conv_2d(network, 256, 5, activation='relu')
network = max_pool_2d(network, 3, strides=2)
network = local_response_normalization(network)
network = conv_2d(network, 384, 3, activation='relu')
network = conv_2d(network, 384, 3, activation='relu')
network = conv_2d(network, 256, 3, activation='relu')
network = max_pool_2d(network, 3, strides=2)
network = local_response_normalization(network)
network = fully_connected(network, 4096, activation='tanh')
network = dropout(network, 0.5)
network = fully_connected(network, 4096, activation='tanh')
network = dropout(network, 0.5)
network = fully_connected(network, 17, activation='softmax')
network = regression(network, optimizer='momentum',
                     loss='categorical_crossentropy',
                     learning_rate=0.001)
model = tflearn.DNN(network, checkpoint_path='model_alexnet',
                    max_checkpoints=1, tensorboard_verbose=2)
model.fit(training_data, b,n_epoch=1000,validation_set=0.1, shuffle=True,
          show_metric=True, batch_size=64, snapshot_step=200,
          snapshot_epoch=False, run_id='alexnet_oxflowers17')
 
 

که هنگام اجرای

model.fit(training_data, b, n_epoch=1000, validation_set=0.1, shuffle=True,
          show_metric=True, batch_size=64, snapshot_step=200,
          snapshot_epoch=False, run_id='alexnet_oxflowers17')

با خطای زیر مواجه شدم:

Exception in thread Thread-8:
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\
tensorflow\python\framework\common_shapes.py", line 670,
in _call_cpp_shape_fn_impl   status)
File "C:\ProgramData\Anaconda3\envs\tensorflow\lib\contextlib.py",
line 66, in __exit__ next(self.gen)
File "C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\
tensorflow\python\framework\errors_impl.py", line 469,
in raise_exception_on_not_ok_status
pywrap_tensorflow.TF_GetCode(status))
tensorflow.python.framework.errors_impl.InvalidArgumentError:
Shape must be rank 1 but is rank 2 for 'strided_slice' 
(op: 'StridedSlice') with input shapes: [9,3], [1,8], [1,8], [1].

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "C:\ProgramData\Anaconda3\envs\tensorflow\lib\threading.py"
,line 914, in _bootstrap_inner self.run()
File "C:\ProgramData\Anaconda3\envs\tensorflow\lib\threading.py"
,line 862, in run self._target(*self._args, **self._kwargs)
File "C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\
tflearn\data_flow.py"
,line 187,in fill_feed_dict_queue data = self.retrieve_data(batch_ids)
File "C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\
tflearn\data_flow.py"
,line 222,in retrieve_data utils.slice_array(self.feed_dict[key],batch_ids)
File "C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\
tflearn\utils.py"
,line 187, in slice_array return X[start]
File "C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\
tensorflow\python\ops\array_ops.py"
,line 513, in _SliceHelper name=name)
File "C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\
tensorflow\python\ops\array_ops.py"
,line 671, in strided_slice shrink_axis_mask=shrink_axis_mask)
File "C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\
tensorflow\python\ops\gen_array_ops.py"
,line 3688,in strided_slice shrink_axis_mask=shrink_axis_mask,name=name)
File "C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\
tensorflow\python\framework\op_def_library.py"
,line 763, in apply_op op_def=op_def)
File "C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\
tensorflow\python\framework\ops.py"
,line 2397, in create_op set_shapes_for_outputs(ret)
File "C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\
tensorflow\python\framework\ops.py", line 1757
,in set_shapes_for_outputs shapes = shape_func(op)
File "C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\
tensorflow\python\framework\ops.py"
,line 1707, in call_with_requiring
return call_cpp_shape_fn(op, require_shape_fn=True)
File "C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\
tensorflow\python\framework\common_shapes.py"
,line 610, in call_cpp_shape_fn
debug_python_shape_fn, require_shape_fn)
File "C:\ProgramData\Anaconda3\envs\tensorflow\lib\site-packages\
tensorflow\python\framework\common_shapes.py"
,line 675, in _call_cpp_shape_fn_impl raise ValueError(err.message)
ValueError: Shape must be rank 1 but is rank 2 for 
'strided_slice'  shapes: [9,3], [1,8], [1,8], [1].

لیست کامل خطاها رو میتونید اینجا ببینید

ValueError: Shape must be rank 1 but is rank 2 for 'strided_slice'  
(op: 'StridedSlice')  with inputshapes: [9,3], [1,8], [1,8], [1].

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

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

1 پاسخ

+1 امتیاز
 
بهترین پاسخ

سلام
چندتا نکته رو کلا دقت بهش نکردید
نکته اول در مورد shape داده ورودی شماست . شبکه شما ورودی به فرم 227x227x3 میگیره . اما شما دارید تصاویری با اندازه و شکل کاملا متفاوت میدید.
اون بخشی که تصویر ور میخونید باید اینطور تغییر میدادید حداقل :

training_data = np.empty(shape=(training_size, 227,227,3))  

موقع خوندن هم دیگه نیازی به reshape کردن ندارید reshape(-1) داده رو مسطح یا اصطلاحا flatten میکنه (بصورت یه بردار یه بعدی در میاره)

training_data[i] = image

نکته بعدی هم اینه که تعداد دسته ها یا کلاس های شما هم 17 تا نیست 3 تاس پس اون لایه آخر رو هم تصحیح کنید.

توسط (4.3k امتیاز)
انتخاب شده توسط
با سپاس از صبر وپاسخگویی جنابعالی...
بنابراین برای شبکه فوق نمی توان تصاویری با سایز مثلا 20*20 به عنوان ورودی تعریف کرد؟
سلام شدن میشه . کافیه شما دقت بیشتری به سورس کد کنید . میبینید لایه ورودی شما داره داده با اندازه 227 در 227 میخونه . پس با مشخص کردن این بخش و همینطور خوندن دیتای مورد نیاز نباید مشکل خاصی داشته باشید.
سپاسگزارم...
تغییراتی رو که فرمودید من اعمال کردم:
training_data = np.empty(shape=(training_size, 20,20,3))

سپس:
    training_data[i] = image
اصلاح ورودی:
network = input_data(shape=[None, 20, 20, 3])
و نهایتا
network = fully_connected(network, 3, activation='softmax')
اما بازهم با خطای زیر
ValueError: Shape must be rank 1 but is rank 2 for 'strided_slice' (op: 'StridedSlice') with input shapes: [9,3], [1,8], [1,8], [1].
روبه رو می شم.
درصورت امکان راهنمایی بفرمایید.
سپاس مجدد
...