Python Keras ImageDataGenerator: AttributeError: 'super' object has no attribute 'init'
Python Keras ImageDataGenerator: AttributeError: 'super' object has no attribute 'init'
我正在尝试编写一个数据生成器,我想从 Keras 继承 ImageDataGenerator 对象。目的是在自己的生成器中使用Keras模块的一些图像预处理能力
from keras.preprocessing.image import ImageDataGenerator
不幸的是,我仍在努力理解超级 类 的工作原理和继承的事情,所以我很难调试我的代码。
from keras.preprocessing.image import ImageDataGenerator
class dataGenerator(ImageDataGenerator):
"""
A data generator object that flows data from selected source.
Initializes with parameters from Keras ImageDataGenerator.
"""
def __init__(self, *args, **kwargs):
super(dataGenerator, self).init(*args, **kwargs)
self.iterator=None
当我尝试创建对象时出现以下错误:
d = dataGenerator()
Traceback (most recent call last):
File "<ipython-input-10-44bd98315a72>", line 1, in <module>
d = dataGenerator()
File "C:/Users/joshu/Documents/Code/Self Driving Car/data_utils.py", line 152, in __init__
super(dataGenerator, self).init(*args, **kwargs)
AttributeError: 'super' object has no attribute 'init'
我在 GitHub 上引用了来自 mratsim 的代码示例:
[1]https://github.com/mratsim/Amazon_Forest_Computer_Vision/blob/master/src/k_dataloader.py
他继承了同一个对象。我猜这对他有用..
__init__
方法必须有 4 个下划线,就像您在 def
部分所做的那样。
这是一个Python模式,父class也遵循这个:
super(dataGenerator,self).__init__(...)
题外话:通常,class 名称以大写字母开头,以区别于普通值变量。因此,DataGenerator
是遵循该建议的更好名称。
from keras.preprocessing.image import ImageDataGenerator
class dataGenerator(ImageDataGenerator):
"""
A data generator object that flows data from selected source.
Initializes with parameters from Keras ImageDataGenerator.
"""
def __init__(self, *args, **kwargs):
ImageDataGenerator.__init__(self,*args, **kwargs)
self.iterator=None
super() 适用于 python 3.x 。可能你正在使用 python 2.x
我正在尝试编写一个数据生成器,我想从 Keras 继承 ImageDataGenerator 对象。目的是在自己的生成器中使用Keras模块的一些图像预处理能力
from keras.preprocessing.image import ImageDataGenerator
不幸的是,我仍在努力理解超级 类 的工作原理和继承的事情,所以我很难调试我的代码。
from keras.preprocessing.image import ImageDataGenerator
class dataGenerator(ImageDataGenerator):
"""
A data generator object that flows data from selected source.
Initializes with parameters from Keras ImageDataGenerator.
"""
def __init__(self, *args, **kwargs):
super(dataGenerator, self).init(*args, **kwargs)
self.iterator=None
当我尝试创建对象时出现以下错误:
d = dataGenerator()
Traceback (most recent call last):
File "<ipython-input-10-44bd98315a72>", line 1, in <module>
d = dataGenerator()
File "C:/Users/joshu/Documents/Code/Self Driving Car/data_utils.py", line 152, in __init__
super(dataGenerator, self).init(*args, **kwargs)
AttributeError: 'super' object has no attribute 'init'
我在 GitHub 上引用了来自 mratsim 的代码示例:
[1]https://github.com/mratsim/Amazon_Forest_Computer_Vision/blob/master/src/k_dataloader.py
他继承了同一个对象。我猜这对他有用..
__init__
方法必须有 4 个下划线,就像您在 def
部分所做的那样。
这是一个Python模式,父class也遵循这个:
super(dataGenerator,self).__init__(...)
题外话:通常,class 名称以大写字母开头,以区别于普通值变量。因此,DataGenerator
是遵循该建议的更好名称。
from keras.preprocessing.image import ImageDataGenerator
class dataGenerator(ImageDataGenerator):
"""
A data generator object that flows data from selected source.
Initializes with parameters from Keras ImageDataGenerator.
"""
def __init__(self, *args, **kwargs):
ImageDataGenerator.__init__(self,*args, **kwargs)
self.iterator=None
super() 适用于 python 3.x 。可能你正在使用 python 2.x