gpt4 book ai didi

tensorflow - 自定义 DataGenerator tensorflow 错误 'ValueError: Failed to find data adapter that can handle input'

转载 作者:行者123 更新时间:2023-12-04 17:15:17 24 4
gpt4 key购买 nike

我有一个 2 channel 类图像文件,我从中切割补丁作为卷积自动编码器的训练/验证数据集。我正在使用 TensorFlow 的自定义数据生成器为每个批处理和时期使用不同的数据。

这是我的 CustomDataGenerator 类:

class CustomDataGenerator(tf.keras.utils.Sequence):

def __init__(self, file, sample_size, batch_size=32, width=28, height=28, resolution=(28, 28)):
'Initialization'
self.sample_size = sample_size
self.batch_size = batch_size
self.resolution = resolution
self.width = width
self.height = height


def __len__(self):
'Denotes the number of batches per epoch'
return int(np.floor(self.sample_size / self.batch_size))

def __getitem__(self, index):
'Generate one batch of data'

batch = []
for i in range(self.batch_size):
....

x = np.asarray(batch)
x = tf.transpose(x, [0, 2, 3, 1])
return x, x

和训练代码:

...
train_gen = data_generator.CustomDataGenerator(file=file, sample_size=10000)
val_gen = data_generator.CustomDataGenerator(file=file, sample_size=2000)
history = autoencoder.fit(train_gen, epochs=100, validation_data=val_gen)
...

当我运行它抛出的代码时:

ValueError: Failed to find data adapter that can handle input: <class 'data_generator.CustomDataGenerator'>, <class 'NoneType'>

训练期间在 model.fit 行中。

tensorflow ==2.5.0, keras ==2.4.3

最佳答案

您的 __getitem__ 方法必须返回 X、Y 对。为什么要返回 X,X 而不是?

然后将 train_gen 传递给 model.fit() 进行训练。该错误是由于您将 X 作为 Y 参数发送给您的 model.fit()

PS:你可以使用on_epoch_end。 fit 方法将在每个纪元结束时调用此函数。

关于tensorflow - 自定义 DataGenerator tensorflow 错误 'ValueError: Failed to find data adapter that can handle input',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68814034/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com