пытается FineTune restNet50 режиме Проблема - PullRequest
0 голосов
/ 13 января 2020

Надеюсь, кто-нибудь может мне помочь, я смотрю на это часами ...

независимо от того, какой batch_size я использую, 8,12,16,24 Я получаю ту же ошибку с другим окончанием,

Если я увеличу размер пакета до 32, это даст мне GPU из памяти, поэтому я уменьшу его, а затем я получаю эту ошибку

base_model = ResNet50(weights='imagenet', input_shape=(380,380,3), include_top=False)

for layer in base_model.layers:
    layer.trainable = True

x = base_model.output
predicted = Dense(2,activation ='sigmoid')(x)

model_pretrain = models.Model(inputs=base_model.input, outputs=predicted)

model_pretrain.compile(loss=keras.losses.categorical_crossentropy,
          optimizer=optimizers.Adam(lr = 0.0002),
          metrics=['accuracy'])
batch_size=8

history=model_pretrain.fit(x_train, Y_train,
                           verbose=1,
                           batch_size=8,  
                           epochs=3,
                           use_multiprocessing=True,
                           workers=10 )
--------------------------------------------------------------------
InvalidArgumentError: 2 root error(s) found.
  (0) Invalid argument: Incompatible shapes: [8] vs. [8,12,12]
     [[{{node metrics_2/acc/Equal}}]]
     [[loss_1/mul/_7573]]
  (1) Invalid argument: Incompatible shapes: [8] vs. [8,12,12]
     [[{{node metrics_2/acc/Equal}}]]
0 successful operations.
0 derived errors ignored.
-----------------------------------------------------------------
if I se batch_size of 24 
InvalidArgumentError: 2 root error(s) found.
  (0) Invalid argument: Incompatible shapes: [24] vs. [24,12,12]
     [[{{node metrics_2/acc/Equal}}]]
     [[loss_1/mul/_7573]]
  (1) Invalid argument: Incompatible shapes: [24] vs. [24,12,12]
     [[{{node metrics_2/acc/Equal}}]]
0 successful operations.
0 derived errors ignored.

Ответы [ 2 ]

0 голосов
/ 18 января 2020

Благодаря Тимбуусу Калину я смог заставить его работать с его предложением.

Плотный (2, активация = 'softmax')

0 голосов
/ 13 января 2020

Ваша проблема заключается в этой строке кода: Dense(2,activation ='sigmoid').

Вы не можете использовать слой Dense с 2 нейронами и sigmoid активацию.

Прежде всего, убедитесь, что все ваши входные данные подаются соответственно.

Во-вторых, чтобы ваш код работал,

измените

Dense(2,activation ='sigmoid')

на

Dense(2,activation ='softmax') ИЛИ Dense(1,activation ='sigmoid').

Но для того, чтобы одно из этих двух решений работало, данные должны быть соответствующим образом поданы (вам не нужно кодировать двоичные метки в горячем коде для пример для Dense(1, activation='sigmoid). Но если вы используете Dense(2,activation ='softmax'), тогда ваши метки должны быть закодированы в горячем виде: например, [1,0] для класса 1 и [0,1] для класса 2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...