ValueError: вход должен иметь 3 канала; получил `input_shape = (200, 200, 1)`

Я пытаюсь использовать трансферное обучение с VGG16. Я использую Керас. Но у меня ошибка

vgg = vgg16.VGG16(include_top=False, weights='imagenet', input_shape=(IMG_SIZE, IMG_SIZE, 1))

Любая помощь, что не так?

Примечание: IMG_SIZE = 200

След ошибки

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-5-1b17094c93e2> in <module>
      3 import keras
      4 
----> 5 vgg = vgg16.VGG16(include_top=False, weights='imagenet', input_shape=(IMG_SIZE, IMG_SIZE, 1))
      6 
      7 output = vgg.layers[-1].output

c:\users\hiteshsom\documents\deepanshu_q2\env\lib\site-packages\tensorflow\python\keras\applications\vgg16.py in VGG16(include_top, weights, input_tensor, input_shape, pooling, classes, classifier_activation)
    124                      ' as true, `classes` should be 1000')
    125   # Determine proper input shape
--> 126   input_shape = imagenet_utils.obtain_input_shape(
    127       input_shape,
    128       default_size=224,

c:\users\hiteshsom\documents\deepanshu_q2\env\lib\site-packages\tensorflow\python\keras\applications\imagenet_utils.py in obtain_input_shape(input_shape, default_size, min_size, data_format, require_flatten, weights)
    363           raise ValueError('`input_shape` must be a tuple of three integers.')
    364         if input_shape[-1] != 3 and weights == 'imagenet':
--> 365           raise ValueError('The input must have 3 channels; got '
    366                            '`input_shape=' + str(input_shape) + '`')
    367         if ((input_shape[0] is not None and input_shape[0] < min_size) or

ValueError: The input must have 3 channels; got `input_shape=(200, 200, 1)`

person Hitesh Somani    schedule 09.10.2020    source источник
comment
(200, 200, 1) отличается от (200, 200, 3)   -  person Marco Cerliani    schedule 09.10.2020
comment
Но размер моего входного изображения (200, 200, 1). У меня изображение в оттенках серого   -  person Hitesh Somani    schedule 09.10.2020
comment
Вы используете модель, предварительно обученную в ImageNet, которая представляет собой данные о цвете (3 канала). Вы не можете использовать эту модель с 1-канальными данными.   -  person xdurch0    schedule 09.10.2020
comment
Отвечает ли это на ваш вопрос? Нейронная сеть не принимает изображения в оттенках серого   -  person desertnaut    schedule 30.10.2020


Ответы (1)


Вы не можете использовать веса изображений с одноканальными изображениями. Это может решить вашу проблему:

vgg = vgg16.VGG16(include_top=False, weights=None, input_shape=(IMG_SIZE, IMG_SIZE, 1))
person Jude TCHAYE    schedule 04.03.2021