簡體   English   中英

Python Keras ImageDataGenerator:AttributeError:'super'對象沒有屬性'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模式,父類也遵循此模式:

super(dataGenerator,self).__init__(...)

離題:類名通常以大寫字母開頭,以區別於普通值變量。 因此,遵循該建議, 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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM