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

با تشکر

دسته بندی ها

+1 امتیاز

سلام بنده دیتاستی دارم ک اندازه ورودی ها متفاوته ی تصویر مثلا 100 در 50 یکی دیگ 500 در 200 از طرفی باید توی لایه کانولووشن مقدار بدیم مثلا بگیم 32*32 در این مورد چطوری باید پیاده سازی رو انجام داد؟

Create the neural network

def conv_net(x_dict, n_classes, dropout, reuse, is_training):

# Define a scope for reusing the variables
with tf.variable_scope('ConvNet', reuse=reuse):
    # TF Estimator input is a dict, in case of multiple inputs
    x = x_dict['images']

    # MNIST data input is a 1-D vector of 784 features (28*28 pixels)
    # Reshape to match picture format [Height x Width x Channel]
    # Tensor input become 4-D: [Batch Size, Height, Width, Channel]
    x = tf.reshape(x, shape=[-1, 28, 28, 1])

    # Convolution Layer with 32 filters and a kernel size of 5
    conv1 = tf.layers.conv2d(x, 32, 5, activation=tf.nn.relu)
    # Max Pooling (down-sampling) with strides of 2 and kernel size of 2
    conv1 = tf.layers.max_pooling2d(conv1, 2, 2)

    # Convolution Layer with 64 filters and a kernel size of 3
    conv2 = tf.layers.conv2d(conv1, 64, 3, activation=tf.nn.relu)
    # Max Pooling (down-sampling) with strides of 2 and kernel size of 2
    conv2 = tf.layers.max_pooling2d(conv2, 2, 2)

    # Flatten the data to a 1-D vector for the fully connected layer
    fc1 = tf.contrib.layers.flatten(conv2)

    # Fully connected layer (in tf contrib folder for now)
    fc1 = tf.layers.dense(fc1, 1024)
    # Apply Dropout (if is_training is False, dropout is not applied)
    fc1 = tf.layers.dropout(fc1, rate=dropout, training=is_training)

    # Output layer, class prediction
    out = tf.layers.dense(fc1, n_classes)

return out
توسط (141 امتیاز)
این سوال من هم هست. فکر میکنم باید دیتا ست رو کراپ کنیم و به سایز استاندارد تبدیل کنیم.

3 پاسخ

+1 امتیاز

با سلام..
تا آنجا که من میدونم خود شبکه کانولوشن به ابعاد یکسان نیازی نداره به خاطر لایه fully connected هست که باید ابعاد یکسان باشه و این هم توسط روش یا همون لایه spp قبل از لایه fully connected حل میشه.. بنابراین میتونید برای شبکه کانولوشن هم ابعاد مختلف در تصاویر ورودی داشته باشید.. توضیح این مبحث در آموزش شبکه های کانولوشن توسایت هست.

توسط (155 امتیاز)
+2 امتیاز

سلام
میتونید شبکه رو همون سایز ثابتی در نظر بگیرید و تصاویر بعد از اینکه crop/warp بصورت pre-processing انجام شد به شبکه اعمال کرد یا اینکه یکی از راهای غلبه بر این روش همان روش spp هست

توسط (389 امتیاز)
+1 امتیاز

سلام
آقا/خانم daraee درست میگن، هیچ جایی توی شبکه کانولوشنی، به جز برای ورودی‌های لایه های fc نیازی نیست که سایز ثابتی در نظر گرفته بشه و خیلی ساده حتی می تونید اندازه feature map ها رو قبل از لایه fc ، با تابع resize تغییر اندازش بدید که همیشه ورودی fc یه اندازه باشه. این ساده ترین کاری که میشه کرد و اتفاقا بد هم جواب نمی ده تا جایی که من تست کردم. فقط نکته اینجاس که اندازه تصاویرتون اینقدر نباید کوچیک باشه که توی pooling ها یا اگه کانولوشن با stride بزرگتر از 1 دارید، اینقدر کوچیک بشه که یکی از ابعاد صفر بشه.
حتی توی کدتون هم لازم نیست که جایی اندازه ورودی رو مشخص کنید. وقتی هم که نیازه شبکه train بشه، یا می تونید همه تصاویر یه اندازه رو یه دسته اش کنید و بدید به شبکه که اینطوری محاسبات سریعتره یا یه راه ساده تر هم هست اما کندتره، اینه که 1 دونه 1 دونه تصویر بدید به شبکه و گرادیان ها رو مثلا برای هر 32 تا تصویر میانگین بگیرید و شبکه رو آپدیت کنید.

توسط (1.6k امتیاز)
...