Как отрегулировать выходные размеры модели Keras? - PullRequest
1 голос
/ 04 октября 2019

Я пытаюсь построить искусственную нейронную сеть, используя Keras. Вход модели имеет размеры (5, 5, 2), а выход имеет размеры (5,5). При запуске функции keras.fit () я сталкиваюсь со следующей ошибкой:

ValueError: Error when checking target: expected dense_3 to have 4 dimensions, but got array with shape (5, 5)

Вот код, который я выполняю

from keras.models import Sequential
from keras.layers import Dense, Flatten
import matplotlib.pyplot as plt
from keras.callbacks import EarlyStopping, ModelCheckpoint

model = Sequential()

model.add(Dense(1000, input_shape=(5, 5, 2), activation="relu"))
model.add(Dense(1000, activation="relu"))
model.add(Dense(2), output_shape=(5,5))

model.summary()

model.compile(optimizer="adam",loss="mse", metrics = ["mse"])

monitor_val_acc = EarlyStopping(monitor="loss", patience = 10)


history = model.fit(trainX, trainYbliss, epochs=1000, validation_data=(testX, testY), callbacks = [monitor_val_acc], verbose = 1)

clinical = model.predict(np.arange(0, len(testY)))

Вот архитектура сети:

Layer (type)                 Output Shape              Param #   
=================================================================
dense_1 (Dense)              (None, 5, 5, 1000)        3000      
_________________________________________________________________
dense_2 (Dense)              (None, 5, 5, 1000)        1001000   
_________________________________________________________________
dense_3 (Dense)              (None, 5, 5, 1)           1001      
=================================================================
Total params: 1,005,001
Trainable params: 1,005,001
Non-trainable params: 0
_________________________________________________________________

Модель должна выводить массив (5,5), основанный на массиве (5,5,2), но не работает на самом нижнем скрытом слое. Как мне решить эту проблему?

Ответы [ 2 ]

0 голосов
/ 06 октября 2019

используйте приведенный ниже код в качестве ссылки и измените значения в соответствии с вашими входными значениями:

train_data = train_data.reshape (train_data.shape [0], 10, 30, 30, 1)

для обоих ваших входных данных поезда,

0 голосов
/ 04 октября 2019

Ваша сеть выдаст тензор формы (batch_size, 5, 5, 1). Является ли ваш выход 4-мерным тензором? если это единственное значение (5,5), вам нужно изменить его на (1,5,5,1) я думаю

...