python - Keras:DataFrameIterator - 如何获取下一批(TypeError:'float' object is not callable)
问题描述
我正在使用flow_from_dataframe
构建一个 DataFrameIterator:
datagen=ImageDataGenerator()
train_generator=datagen.flow_from_dataframe(...)
print(train_generator)
>> <keras_preprocessing.image.DataFrameIterator object at 0x00000262F5D93F60>
现在我正试图从这个生成器中获取一个批次。通常next(train_generator)
在flow_from_directory
生成器上使用,但是这种方法
x,y = next(train_generator)
和
x,y = train_generator.next
结果是:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-48-6be8f38d3987> in <module>
----> 1 next(train_generator)
~\AppData\Local\Continuum\anaconda3\envs\tensorflow-gpu\lib\site-packages\keras_preprocessing\image.py in __next__(self, *args, **kwargs)
1524
1525 def __next__(self, *args, **kwargs):
-> 1526 return self.next(*args, **kwargs)
1527
1528 def _get_batches_of_transformed_samples(self, index_array):
~\AppData\Local\Continuum\anaconda3\envs\tensorflow-gpu\lib\site-packages\keras_preprocessing\image.py in next(self)
2201 # The transformation of images is not under thread lock
2202 # so it can be done in parallel
-> 2203 return self._get_batches_of_transformed_samples(index_array)
~\AppData\Local\Continuum\anaconda3\envs\tensorflow-gpu\lib\site-packages\keras_preprocessing\image.py in _get_batches_of_transformed_samples(self, index_array)
2160 params = self.image_data_generator.get_random_transform(x.shape)
2161 x = self.image_data_generator.apply_transform(x, params)
-> 2162 x = self.image_data_generator.standardize(x)
2163 batch_x[i] = x
2164 # optionally save augmented images to disk for debugging purposes
~\AppData\Local\Continuum\anaconda3\envs\tensorflow-gpu\lib\site-packages\keras_preprocessing\image.py in standardize(self, x)
1117 """
1118 if self.preprocessing_function:
-> 1119 x = self.preprocessing_function(x)
1120 if self.rescale:
1121 x *= self.rescale
TypeError: 'float' object is not callable
如何访问单个批次(即下一批)?
编辑:正如@today在评论中指出的那样,使用 next(train_generator) 应该可以正常工作。在我的情况下,我使用的是preprocess_input
参数,ImageDataGenerator
而我应该使用rescale
参数。现在问题解决了!
解决方案
尝试
x,y = next(iter(train_generator))
推荐阅读
- android - Android 有没有我可以调用的功能来将日历滚动到设定的日期?
- javascript - 您如何开玩笑地模拟 es6 类上的实例/类变量?
- r - R 函数 persp():有没有办法生成对数刻度?
- dictionary - 使用 2 个幻灯片菜单创建地图以查找实体选择
- python - 如何使用python终止在父终端和linux的“n”子终端中运行的进程?
- mysql - SQL 过程打印游标
- c++ - 将数组导出到 txt 文件
- r - 小计对 expss 表中显着性检验的影响
- node.js - Angular 9 - PUT 请求不发送正文
- c - ATtiny85 - 带 Timer1 的软件 UART