Я создаю CNN, чтобы предсказывать кошек и собак из kaggle (filetype: jpg).Я использую бэкэнд тензорного потока в среде анаконды с Python 3.6.Но я получаю эту ошибку:
ValueError: Ошибка при проверке цели: ожидается, что для Activation_8 будет 2 измерения, но получен массив с формой (24943, 50, 50, 1)
import tensorflow as tf
from tensorflow.keras.datasets import cifar10
from tensorflow.keras.preprocessing.image import ImageDataGenerator
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten
from tensorflow.keras.layers import Conv2D, MaxPooling2D
import pickle
pickle_in = open("X.pickle","rb")
X = pickle.load(pickle_in)
pickle_in = open("y.pickle","rb"`
y = pickle.load(pickle_in)
X = X/255.0
model = Sequential()
model.add(Conv2D(256, (3, 3), input_shape=X.shape[1:]))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(256, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten()) # this converts our 3D feature maps to 1D feature vectors
model.add(Dense(64))
model.add(Dense(1))
model.add(Activation('sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='adam',
metrics=['accuracy'])
model.fit(X, y, batch_size=32, epochs=3, validation_split=0.3)
Вот таблица model.summary ()
Слой (тип) Выходной параметр Параметр #
conv2d_22 (Conv2D) (Нет, 48, 48, 256) 2560
активации_30 (активация) (нет, 48, 48, 256) 0
max_pooling2d_22 (MaxPooling (нет, 24, 24, 256) 0
conv2d_23 (Conv2D) (Нет, 22, 22, 256) 590080
активации_31 (Активация) (Нет, 22, 22, 256) 0
max_pooling2d_23 (MaxPooling(Нет, 11, 11, 256) 0
flatten_11 (Flatten) (Нет, 30976) 0
density_19 (Плотный) (Нет, 64) 1982528
density_20 (Плотный) (Нет, 1) 65
активации_32 (Активация) (Нет, 1) 0
Всего параметров: 2,575,233 Обучаемые параметры: 2,575,233Не обучаемые параметры: 0