Пытаясь классифицировать изображения с использованием тензорного потока в Google Colab, у меня возникают проблемы с получением формы моего целевого массива, соответствующей размеру выходной формы - PullRequest
0 голосов
/ 19 апреля 2020

Вот моя модель создания:

 import tensorflow as tf
    from tensorflow.keras.layers import Conv2D, MaxPooling2D, Dense, Dropout, Flatten, Activation
    model = tf.keras.models.Sequential()

    model.add(Conv2D(40, kernel_size=5, padding="same",input_shape=(300, 300, 1), activation = 'relu'))
    model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))

    model.add(Conv2D(70, kernel_size=3, padding="same", activation = 'relu'))
    model.add(Conv2D(500, kernel_size=3, padding="same", activation = 'relu'))
    model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))

    model.add(Conv2D(1024, kernel_size=3, padding="valid", activation = 'relu'))
    model.add(MaxPooling2D(pool_size=(2, 2), strides=(2, 2)))

    model.add(Dense(units=100, activation='relu'  ))
    model.add(Dropout(0.8))


    model.add(Dense(2))
    model.add(Activation("softmax"))
    model.compile(loss='categorical_crossentropy', optimizer='adam', metrics=['accuracy'])


    optim = "adam"
    model.compile(optimizer=optim,
              loss='categorical_crossentropy',
              metrics=['accuracy'])

train = train_data[:858]
test = train_data[859:]

X = np.array([i[0] for i in train]).reshape(-1,IMG_SIZE,IMG_SIZE,1)
Y = [i[1] for i in train]



Y=np.array(Y)

print(X.shape)
(858, 300, 300, 1)
model.fit(X, Y, epochs=1)

Вот мое сообщение об ошибке: Любая помощь будет принята с благодарностью.

Спасибо Кроме того, мой размер изображения составляет 300 --- -------------------------------------------------- ----------------------

ValueError                                Traceback (most recent call last)

<ipython-input-131-d4fc87229b94> in <module>()
----> 1 model.fit(X, Y, epochs=1)

3 frames

/usr/local/lib/python3.6/dist-packages/tensorflow_core/python/keras/engine/training_utils.py in check_loss_and_target_compatibility(targets, loss_fns, output_shapes)
    739           raise ValueError('A target array with shape ' + str(y.shape) +
    740                            ' was passed for an output of shape ' + str(shape) +
--> 741                            ' while using as loss `' + loss_name + '`. '
    742                            'This loss expects targets to have the same shape '
    743                            'as the output.')

ValueError: A target array with shape (858, 2) was passed for an output of shape (None, 36, 36, 2) while using as loss `categorical_crossentropy`. This loss expects targets to have the same shape as the output

Размер моего изображения 300

1 Ответ

1 голос
/ 19 апреля 2020

Вы забыли добавить слой Flatten() перед этой строкой:

model.add(Dense(units=100, activation='relu'))

Так что просто добавьте:

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