У меня были большие проблемы с созданием автоэнкодера в кератах, который позволит мне загружать пользовательские наборы данных для обучения и тестирования. Мне удалось найти код, который должен работать, но я продолжаю получать сообщение об ошибке, когда пытаюсь его запустить. Вот мой код, который я буду запускать на Raspberry Pi:
from keras.layers import Input, Dense
from keras.models import Model
import numpy as np
from PIL import Image
from keras.preprocessing.image import. ImageDataGenerator
import matplotlib.pyplot as plt
image = Image.open('/home/pi/Downloads/neural-network-master/data/train/class_a/test(2chunk0.wav).png.jpg')
encoding_dim = 28
input_img = Input(shape=(65536,))
encoded = Dense(encoding_dim, activation='relu')(input_img)
decoded = Dense(65536, activation='sigmoid')(encoded)
autoencoder = Model(input_img, decoded)
encoder = Model(input_img, encoded)
encoded_input = Input(shape=(encoding_dim,))
decoder_layer = autoencoder.layers[-1]
decoder = Model(encoded_input, decoder_layer(encoded_input))
autoencoder.compile(optimizer='adadelta', loss='binary_crossentropy')
train_datagen=ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
directory=r"/home/pi/Downloads/neural-network-master/data/train",
batch_size=32,
class_mode="categorical",
shuffle=True,
seed=42
)
autoencoder.fit_generator(train_generator,
epochs=2,
steps_per_epoch=256,
shuffle=True)
encoded_img = encoder.predict(np.array(image))
print (encoded_img)
decoded_img = decoder.predict(encoded_img)
plt.imshow(decoded_img)
plt.imshow(image)
Я получаю следующую ошибку:
ValueError: Error when checking target: expected dense_2 to have 4 dimensions, but got array with shape (262, 1)
Я полагаю, что это вызвано тем, что керас не нравится форма ввода. Любая помощь приветствуется. Благодарю. Кроме того, было бы замечательно, если бы кто-то мог объяснить мне, что значит плотность_2 ...