我正在尝试在Tensorflow 2.3中实现自动编码器。我将自己存储在磁盘上的图像数据集作为输入。有人能给我解释一下如何以正确的方式实现吗?
我尝试使用tf.keras.preprocessing.image_dataset_from_directory()加载目录中的数据,但当我使用从上述方法获取的数据开始训练时,我得到以下错误。
“值错误:使用数据集作为输入时不支持y参数。”
PFB我正在运行的代码
'''
import tensorflow as tf
from convautoencoder import ConvAutoencoder
from tensorflow.keras.optimizers import Adam
import matplotlib.pyplot as plt
import numpy as np
EPOCHS = 25
batch_size = 1
img_height = 180
img_width = 180
data_dir = "/media/aniruddha/FE47-91B8/Laptop_Backup/Auto-Encoders/Basic/data"
train_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)
(encoder, decoder, autoencoder) = ConvAutoencoder.build(224, 224, 3)
opt = Adam(lr=1e-3)
autoencoder.compile(loss="mse", optimizer=opt)
H = autoencoder.fit( train_ds, train_ds, validation_data=(val_ds, val_ds), epochs=EPOCHS, batch_size=batch_size)
'''
3条答案
按热度按时间wko9yo5t1#
我解决了这个问题。我没有将输入数据集作为元组馈送给模型进行训练。一旦我纠正了这个问题,训练就开始了。
sd2nnvve2#
我使用生成器将输入数据作为元组馈送到自动编码器。请在下面找到我的代码。
cfh9epnr3#
fit
需要data * 和 * 标签,但它只接受一个tf.data.Dataset。要将data用作自动编码器的标签,应向数据集构造函数提供两次,例如: