validation_data не работает в сверточной нейронной сети (Conv1D) - PullRequest
0 голосов
/ 07 июля 2019

Я пытаюсь обучить мою модель CNN так:

model.fit(x_traincnn, y_train, batch_size=8, epochs=50,validation_data=
(x_testcnn, y_test))

Но я получил эту ошибку:

ValueError: Error when checking target: expected activation_40 to have shape (7,) but got array with shape (4,)

И я обнаружил, что проблема в том, что validation_data не может быть оценена. Я имею в виду, у y_test есть другие измерения.

Я получил эти значения из моего набора данных:

n_dim = X_train.shape[1]
n_classes = y_train.shape[1]
n_dim=216
n_classes=7
x_traincnn = (17, 216, 1)
x_testcnn = (5, 216, 1)
y_test = 4

Мое определение последовательной модели:

model = Sequential()
model.add(Conv1D(4, 5,padding='same',strides=1,
             input_shape=(n_dim,1)))
model.add(Activation('relu'))
model.add(Conv1D(3, 5,padding='same')) #2
model.add(Activation('relu'))
model.add(Dropout(rate=0.1))
model.add(Conv1D(3, 5,padding='same')) #3
model.add(Activation('relu'))
model.add(Flatten())
model.add(Dense(n_classes))
model.add(Activation('softmax'))
opt = keras.optimizers.rmsprop(lr=0.00001, decay=1e-6)

Я понимаю, что у плотного лейера должно быть количество классов. Правильно?

Итак, проблема в переменной y_test, которая была сформирована с 4. Итак, если я определю плотный слой с 4, будет работать только для x_test и y_test. Но мне нужно, чтобы модель работала с обоими наборами данных (обучение и тестирование), устанавливая мою модель. Например, как упоминалось ранее:

model.fit(x_traincnn, y_train, batch_size=8, epochs=50,validation_data=  (x_testcnn, y_test))

Не могли бы вы помочь с этим вопросом, пожалуйста? Как я могу сделать для правильной настройки моей модели CNN?

Спасибо

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