Несовместимые формы Tensorflow: [64] против [64,8,8,3] при расчете MSE.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Несовместимые формы Tensorflow: [64] против [64,8,8,3] при расчете MSE.

Сообщение Anonymous »

Мой код не работает из-за несовместимости фигур [64] и [64, 8, 8, 3] при вычислении MSE.
Ниже приведен мой код, я ожидал, что он будет работать с никаких заминок, но этого не произошло. Я нашел аналогичный вопрос в Stack, в котором предлагалось добавить сглаживающий слой, изменить оптимизатор на устаревший и т. д. Ничего из этого не сработало, и я не уверен, что делать дальше. Будем признательны за любую помощь, ошибка указана внизу страницы:

Код: Выделить всё

SIZE = 8
batch_size = 64

train_generator = preprocessing.image_dataset_from_directory(
r'C:\Users\{}\Downloads\archive (1)\noncloud_train',
image_size=(SIZE, SIZE),
batch_size=batch_size,
labels='inferred'
)

validation_generator = preprocessing.image_dataset_from_directory(
r'C:\Users\{}\Downloads\archive (1)\noncloud_test',
image_size=(SIZE, SIZE),
batch_size=batch_size,
labels='inferred'
)

anomaly_generator = preprocessing.image_dataset_from_directory(
r'C:\Users\{}\Downloads\archive (1)\cloud',
image_size=(SIZE, SIZE),
batch_size=batch_size,
labels='inferred'
)

rescaling_layer = layers.Rescaling(1./255)

def change_inputs(images, labels):
print(f"Original images shape: {images.shape}")
x = tensorflow.image.resize(rescaling_layer(images),[SIZE, SIZE], method=tensorflow.image.ResizeMethod.NEAREST_NEIGHBOR)
print(f"Resized images shape: {x.shape}")
return x, x

train_dataset = train_generator.map(change_inputs)
validation_dataset = validation_generator.map(change_inputs)
anomaly_dataset = anomaly_generator.map(change_inputs)

model = Sequential()
# Encoder
model.add(layers.Conv2D(64, (3, 3), activation='relu', padding='same', input_shape=(SIZE, SIZE, 3)))
model.add(layers.MaxPooling2D((2, 2), padding='same')) # reduce the spatial dimensions of the feature maps produced by layers.Conv2D by taking max value (this highlights the most important features) of every 2 x 2 window
model.add(layers.Conv2D(32, (3, 3), activation='relu', padding='same'))
model.add(layers.MaxPooling2D((2, 2), padding='same'))
model.add(layers.Conv2D(16, (3, 3), activation='relu', padding='same'))
model.add(layers.MaxPooling2D((2, 2), padding='same'))

# Deconder
model.add(layers.Conv2D(16, (3, 3), activation='relu', padding='same'))
model.add(layers.UpSampling2D((2, 2)))
model.add(layers.Conv2D(32, (3, 3), activation='relu', padding='same'))
model.add(layers.UpSampling2D((2, 2)))
model.add(layers.Conv2D(64, (3, 3), activation='relu', padding='same'))
model.add(layers.UpSampling2D((2, 2)))

model.add(layers.Conv2D(3, (3, 3), activation='sigmoid', padding='same'))

model.compile(optimizer=Adam(learning_rate=0.001), loss='mean_squared_error', metrics=['mse'])
model.summary()

for images, labels in train_dataset.take(1):
training_ims, training_ls = images.shape, labels.shape
print(f"Training images shape: {images.shape}, Training labels shape: {labels.shape}")
for images, labels in validation_dataset.take(1):
print(f"Validation images shape: {images.shape}, Validation labels shape: {labels.shape}")
val_ims, val_ls = images.shape, labels.shape

# model fitting
history = model.fit(
train_dataset,
steps_per_epoch = 1500 // batch_size,
epochs = 1000,
validation_data = validation_dataset,
validation_steps = 225 // batch_size,
shuffle = True
)

# Plot traning and validation accuracy/loss at each epoch
loss = history.history['loss']
val_loss = history.history['val_loss']
epochs = range(1, len(loss) + 1)
plt.plot(epochs, loss, 'y', label='Training loss')
plt.plot(epochs, val_loss, 'r', label='Validation loss')
plt.title('Training and validation loss')
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()
plt.show()

data_batch = []

for images, _ in train_dataset:
data_batch.append(images.numpy())

data_batch = np.concatenate(data_batch, axis=0)

predicted = model.predict(data_batch)

image_num = random.randint(0, predicted.shape[0])
plt.figure(figsize=(12, 6))
plt.subplot(121)
plt.imshow(data_batch[0][image_num])
plt.subplot(122)
plt.imshow(predicted[image_num])
plt.show()

for images, _ in anomaly_generator:
print(f"Anomaly batch shape: {images.shape}")
break

for images, _ in validation_generator:
print(f"Validation batch shape: {images.shape}")
break

# Examine the recon.  error between val data and anomaly images
anomaly_error = model.evaluate(anomaly_generator)
validation_error = model.evaluate(validation_generator)
Файл ~\AppData\Local\Programs\Python\Python311\Lib\site-packages\spyder_kernels\py3compat.py:356 в compat_exec
exec(code, globals, locals )
Файл c:\users{}\onedrive\desktop\year 1 Summer\riverpollution.py:229
anomaly_error = model.evaluate(anomaly_generator)Файл ~\AppData\Local\Programs\Python\Python311\Lib\site-packages\keras\src\utils\traceback_utils.py:122 в error_handler
поднимите e.with_traceback(filtered_tb) из Нет
Файл ~\AppData\Local\Programs\Python\Python311\Lib\site-packages\tensorflow\python\eager\execute.py:59 в fast_execute
кроме TypeError как e:
InvalidArgumentError: ошибка выполнения графика:
...
Несовместимые фигуры: [64] против [64,8,8,3]
[[{{node compile_loss/mean_squared_error/sub}}]] [Op:__inference_one_step_on_iterator_119380]

Подробнее здесь: https://stackoverflow.com/questions/788 ... lating-mse
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»