ValueError: logits和labels的形状必须相同((None, 328, 328, 3) vs (None, 1))在自编码器中

我正在尝试使用以下代码构建一个自编码器

对于我的训练数据,我使用的是:

img_height = 328img_width = 328train_ds = tf.keras.preprocessing.image_dataset_from_directory(  data_dir,  validation_split=0.2,  subset="training",  seed=123,  image_size=(img_height, img_width),  batch_size=batch_size)val_ds = tf.keras.preprocessing.image_dataset_from_directory(  data_dir,  validation_split=0.2,  subset="validation",  seed=123,  image_size=(img_height, img_width),  batch_size=batch_size)

当我尝试使用autoencoder.fit(train_ds,validation_data=val_ds,epochs=50)运行时,我得到了ValueError: logits和labels的形状必须相同((None, 328, 328, 3) vs (None, 1))

有人知道如何解决这个问题吗?


回答:

对于自编码器,你的目标需要是你的输入。你试图最小化的错误是重构损失,因此输出需要是你的原始输入。默认情况下,Keras目录迭代器会返回目标(例如,0和1),而不是输入。

generator = tf.keras.preprocessing.image.ImageDataGenerator(    validation_split=0.2)

指定class_mode='input'。请注意,我似乎使用了不同的版本,所以我不得不将image_size替换为target_size以便它能够为我运行。

train_ds = generator.flow_from_directory(  data_dir,  subset="training",  seed=123,  image_size=(img_height, img_width),  batch_size=batch_size,  class_mode='input')

这是一个使用生成数据的完整工作示例,它使用了你提供的自编码器架构:

Train for 1 steps1/1 [==============================] - 9s 9s/step - loss: 0.8827

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注