Keras fit_generator验证数据类型错误:“ float”对象无法解释为整数

Adi*_*wal 4 anaconda deep-learning keras

我正在尝试运行Ning-Ding的CUHK03 Person Re-ID脚本(使用Keras实现Ahmed等人的论文),请参见https://github.com/Ning-Ding/Implementation-CVPR2015-CNN-for -ReID

错误文本如下:

TypeError Traceback (most recent call last)
in ()

    ----> 1 main("E:\DL\cuhk-03.h5")

in main(dataset_path)

    17 model = generate_model()
    18 model = compile_model(model)
    ---> 19 train(model, dataset_path)
    20
    21 def train(model,

in train(model, h5_path, weights_name, train_num, one_epoch, epoch_num, flag_random, random_pattern, flag_train, flag_val, which_val_data, nb_val_samples)
    39 rand_x = np.random.rand()
    40 flag_train = random_pattern(rand_x)
    ---> 41 model.fit_generator(Data_Generator.flow(f,flag = flag_train),one_epoch,epoch_num,validation_data=Data_Generator.flow(f,train_or_validation=which_val_data,flag=flag_val),nb_val_samples=nb_val_samples)
    42 Rank1s.append(round(cmc(model)[0],2))
    43 print (Rank1s)

~\Anaconda3\lib\site-packages\keras\legacy\interfaces.py in wrapper(*args, **kwargs)

    89 warnings.warn('Update your ' + object_name + 90 ' call to the Keras 2 API: ' + signature, stacklevel=2)
    ---> 91 return func(*args, **kwargs)
    92 wrapper._original_function = func
    93 return wrapper

~\Anaconda3\lib\site-packages\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)

    2023 epoch = initial_epoch
    2024
    -> 2025 do_validation = bool(validation_data)
    2026 self._make_train_function()
    2027 if do_validation:

TypeError: 'float' object cannot be interpreted as an integer
Run Code Online (Sandbox Code Playgroud)

我正在Windows 10(x86)上的Anaconda中使用Jupyter Notebook。Keras版本2.1.3 Python版本3.6.3 Tensorflow后端(1.4.0)

Dev*_*str 6

好的,那validation_data是由

Data_Generator.flow(f,train_or_validation=which_val_data,flag=flag_val)
Run Code Online (Sandbox Code Playgroud)

do_validation = bool(validation_data)执行时,将调用对象上的bool nonzerolen定义了其中的任何一个。在这种情况下,请Sequence执行len以便进行检查if len(Sequence) == 0。您的问题是len返回a float(这是一个错误),因此当尝试将其转换为时bool,它将失败。

声明len返回int

请访问Dref360,网址https://www.bountysource.com/issues/54744813-fit_generator-throws-error-on-validation-data-being-float-data-type

  • 我有相同的错误,但上下文不同。[本文帮助我发现了问题](https://www.bountysource.com/issues/54744813-fit_generator-throws-error-on-validation-data-being-float-data-type)。生成器上的`__len __()`方法返回一个浮点数。 (2认同)