установка элемента массива с последовательностью - модель Keras - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь обучить CNN в Керасе.

X_train.shape

дает

(4137, 150, 150, 1)

Первые и последние элементы моей модели:

from keras.models import Sequential
from keras.layers import Conv2D,MaxPooling2D,Dense
from keras.layers import Dropout,Activation,Flatten

model = Sequential()
model.add(Conv2D(32, (2,2),
                 input_shape=(150,150,1), activation='relu'))
model.add(MaxPooling2D((3, 3)))
model.add(Dropout(0.25))
model.add(Activation('relu'))

#...

model.add(Flatten())
model.add(Dense(500))
model.add(Activation('relu'))
model.add(Dense(100))
model.add(Activation('relu'))
model.add(Dense(1))
model.add(Activation('softmax'))

Нет проблем с запуском и компиляцией модели, но ее подгонка выдает ошибку:

model.fit(x=X_train,
          y=y_train,
          epochs=20)

y_train.shape is (5910,). Подгонка дает ошибку

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
TypeError: float() argument must be a string or a number, not 'list'

The above exception was the direct cause of the following exception:
...
ValueError: setting an array element with a sequence.

Я полагаю, что это может быть связано с тем, что, как показано на рисунке ниже, преобразование данных в форму (количество выборок, строк, столбцов, 1) делает каждую ячейку своей собственной список. Если я преобразую данные в трехмерное (количество выборок, строк, столбцов) и соответствующим образом скорректирую форму ввода архитектуры модели, это вызовет еще одну ошибку.

enter image description here

Я положил полный код на Kaggle здесь .

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