Python vaidation_数据应为keras fit_生成器中的元组

Python vaidation_数据应为keras fit_生成器中的元组,python,keras,training-data,batchsize,Python,Keras,Training Data,Batchsize,我试图用我的类SequenceGenerator(Sequence)覆盖keras.util.Sequence,并将其传递给fit\u生成器,但fit\u生成器引发了一个错误ValueError 这是我的定制课程 导入操作系统 将numpy作为np导入 从keras.utils导入序列 从batchGenerator导入batchGenerator 从设置导入批次大小、训练文件夹、测试文件夹 class SequenceGenerator(Sequence): def __init__(

我试图用我的类
SequenceGenerator(Sequence)
覆盖
keras.util.Sequence
,并将其传递给
fit\u生成器
,但
fit\u生成器
引发了一个错误
ValueError

这是我的定制课程

导入操作系统 将numpy作为np导入 从keras.utils导入序列 从batchGenerator导入batchGenerator

从设置导入批次大小、训练文件夹、测试文件夹

class SequenceGenerator(Sequence):
    def __init__(self, batches_folder):
        self.batch_generator = BatchGenerator(folder_name=batches_folder)      
        self.names = [f for f in os.listdir(batches_folder) if f.lower().endswith('.jpg')]

    def __len__(self):
        return int(np.ceil(len(self.names) / float(batch_size)))

    def __getitem__(self, idx):
        print('Getting a bacth{0}'.format(idx))
        [X_batch, Y_batch] = self.batch_generator.load_batch_from_disk(idx)
        return X_batch, Y_batch


def train_seq_genenrator():
    return SequenceGenerator(train_folder)


def test_seq_generator():
    return SequenceGenerator(test_folder)
在jupyter笔记本中,我导入了以下内容

from sequenceGenerator import train_seq_genenrator, test_seq_generator
最后,这里是fit_生成器调用

history = new_model.fit_generator(train_seq_genenrator()
                        , steps_per_epoch=num_train_samples // batch_size                        
                        , validation_data=test_seq_generator()
                        , validation_steps=num_test_samples // batch_size
                        , epochs=epochs
                        , shuffle=True)
我得到了以下错误:

---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-63-347bef86c8c0> in <module>()
      4                         , validation_steps=num_test_samples // batch_size
      5                         , epochs=epochs
----> 6                         , shuffle=True)

~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\keras\engine\training.py in fit_generator(self, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)
   1759         use_multiprocessing=use_multiprocessing,
   1760         shuffle=shuffle,
-> 1761         initial_epoch=initial_epoch)
   1762 
   1763   def evaluate_generator(self,

~\Anaconda3\envs\tensorflow\lib\site-packages\tensorflow\python\keras\engine\training_generator.py in fit_generator(model, generator, steps_per_epoch, epochs, verbose, callbacks, validation_data, validation_steps, class_weight, max_queue_size, workers, use_multiprocessing, shuffle, initial_epoch)
    121             '`validation_data` should be a tuple '
    122             '`(val_x, val_y, val_sample_weight)` '
--> 123             'or `(val_x, val_y)`. Found: ' + str(validation_data))
    124       val_x, val_y, val_sample_weights = model._standardize_user_data(
    125           val_x, val_y, val_sample_weight)

ValueError: `validation_data` should be a tuple `(val_x, val_y, val_sample_weight)` or `(val_x, val_y)`. Found: <sequenceGenerator.SequenceGenerator object at 0x000001DCB58259B0>
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在()
4,验证步骤=数量测试样本//批量大小
5,时代=时代
---->6,shuffle=True)
拟合生成器中的~\Anaconda3\envs\tensorflow\lib\site packages\tensorflow\python\keras\engine\training.py(self、生成器、每个历元的步骤、历元、冗余、回调、验证数据、验证步骤、类权重、最大队列大小、工作者、使用多处理、无序、初始历元)
1759使用多处理=使用多处理,
1760洗牌=洗牌,
->1761初始_历元=初始_历元)
1762
1763 def评估_发生器(自,
~\Anaconda3\envs\tensorflow\lib\site packages\tensorflow\python\keras\engine\training\u generator.py in fit\u generator(模型、生成器、每个历元的步骤、历元、冗余、回调、验证数据、验证步骤、类权重、最大队列大小、工作者、使用多处理、无序、初始历元)
121'`validation_data`应该是元组'
122'`(val_x,val_y,val_样品重量)`'
-->123'或`(val_x,val_y)`。找到:'+str(验证数据))
124 val_x,val_y,val_样本权重=模型。_标准化用户数据(
125瓦卢x,瓦卢y,瓦卢样本(重量)
ValueError:“验证数据”应该是一个元组“(val\u x,val\u y,val\u sample\u weight)”或“(val\u x,val\u y)”。发现:
我不知道为什么会发生这种情况,但是在

验证\u数据:这可以是

  • 验证数据的生成器或序列对象
  • 元组(x_val,y_val)
  • 元组(x_val,y_val,val\u sample\u权重)

您的keras版本是什么?在将序列生成器对象传递给fit_generator()时,我还会尝试实例化它;在调用fit_generator时,我尝试实例化一个序列生成器,而不是将其作为返回序列生成器的函数调用。Ras版本为2.2.0,它引发了相同的错误。