Я новичок в Keras и пытаюсь создать самый простой из возможных автоэнкодер.Он состоит из трех уровней: входного уровня, уровня кодированного представления и выходного уровня.Мои данные (обучающие и проверочные изображения) представляют собой единое целое, где каждое изображение имеет размер 214x214x3 (пиксели x пиксели x каналы RGB).Я думал, что мог бы просто использовать форму ввода изображений в слое Input, но я каким-то образом продолжаю сталкиваться с ошибками.
Я попытался сгладить данные, и это прекрасно работает.Я, конечно, могу просто сделать это и изменить форму вывода, но мне любопытно, почему это не работает.
# Shape and size of single image
input_shape = x_tr.shape[1:] # --> (214, 214, 3)
input_size = x_tr[0].size
# Size of encoded representation
encoding_dim = 32
compression_factor = float(input_size / encoding_dim)
# Build model
autoencoder = Sequential()
autoencoder.add(Dense(encoding_dim, input_shape=input_shape,
activation='relu'))
autoencoder.add(Dense(input_shape, activation='softmax'))
input_img = Input(shape=(input_shape,))
encoder_layer = autoencoder.layers[0]
encoder = Model(input_img, encoder_layer(input_img))
autoencoder.compile(optimizer='adadelta', loss='mean_squared_error')
autoencoder.fit(x_tr, x_tr,
epochs=50,
batch_size=32,
shuffle=True,
verbose=1,
validation_data=(x_va, x_va),
callbacks=[TensorBoard(log_dir='/tmp/autoencoder2')])
Я получаю эту ошибку:
TypeError: unsupported operand type(s) for +: 'int' and 'tuple'
Я понялчто форма ввода не будет выглядеть так, но я не уверен, как исправить ее, чтобы она принимала входные данные в форме 214x214x3, а не вектор длиной 137388.