Модель Fit ожидает 1 массив, но я получил 768 - PullRequest
0 голосов
/ 06 февраля 2019

Я новичок в TF и ​​получил небольшую проблему.Я пытаюсь классифицировать цветные изображения с формой (150 х 150 х 3) на 30 классов.Во время подгонки модели я получил ошибку:

ValueError: Ошибка при проверке ввода модели: список массивов Numpy, которые вы передаете вашей модели, не соответствует размеру, который ожидала модель.Ожидается увидеть 1 массив (ов), но вместо этого получен следующий список из 768 массивов: ...

мой код:

model = Sequential() 

model.add(Flatten(input_shape=(150,150,3)))

model.add(Dense(150, activation=tf.nn.relu)) 

model.add(Dense(150, activation=tf.nn.relu))

model.add(Dense(30, activation=tf.nn.softmax))

model.compile(optimizer='adam' ,loss='sparse_categorical_crossentropy' ,metrics=['accuracy'])

model.fit(x_train, y_train, epochs=15, batch_size=768)

, когда входные массивы не являются массивами с нулевыми значениями,попытайтесь привести их, numpy выдает ошибку, что он не может транслировать (150, 150, 3) в форму (150, 150)

, кроме того, входной массив (x_train) представляет собой массив np-массивов сразмер (150 x 150 x 3), так что в целом x_train имеет форму (768 x 150 x 150 x 3), так как у меня 768 наблюдений (я надеюсь, по крайней мере), y_train - это простой массив, состоящий из меток.

Что касается входных данных, то это .jpg изображения, которые были импортированы следующим образом:

with Image.open(filename) as img:
images.append(np.array(img.resize((150,150))))

x_train, x_test, y_train, y_test = train_test_split(images, classes, test_size=0.2, random_state=42)

Спасибо за помощь заранее!

1 Ответ

0 голосов
/ 06 февраля 2019

Похоже, x_train - это список, содержащий 768 членов, каждый из которых представляет собой массив np формы (150, 150, 3).Однако x_train должен быть одним массивом np формы (768, 150, 150, 3), чтобы передать его в функцию подгонки.Вы можете конвертировать x_train в такой массив:

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