2017-09-16 1 views
0

데이터 생성기를 작성하려고하는데 Keras에서 ImageDataGenerator 객체를 상속 받고 싶습니다. 의도는 아직도 슈퍼 클래스가 일을하고 상속 가지 방법을 이해하려고Python Keras ImageDataGenerator : AttributeError : 'super'객체에 'init'속성이 없습니다.

불행하게도
from keras.preprocessing.image import ImageDataGenerator 

내 자신의 발전기에 Keras 모듈의 이미지 전처리 기능의 일부를 사용하는 것입니다, 그래서 하드가 있어요 내 코드를 디버깅하는 시간.

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

그는 동일한 대상을 상속받습니다. 나는 그를 위해 일한 것 같아요.

답변

1

def 부분에서했던 것처럼, __init__ 방법은 4 개의 밑줄이 있어야합니다.

는 파이썬 패턴이며, 부모 클래스는이 다음과 같습니다 : 주제 오프

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

: 자주, 클래스 이름은 보통 값이 바르 구별하기 위해 대문자 문자로 시작합니다. 따라서 DataGenerator은 그 추천에 이어 더 나은 이름입니다.

+0

아를 사용하는 파이썬 3.x를 작동, 나는 그것을 보지 않았다 믿을 수 없다. 감사! 좋아요, 좋은 조언을 그 명명법으로 보겠습니다. –

-1
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 

슈퍼() .Probably 당신은 내가 바보 파이썬 2.X에게

+0

super()는 파이썬 2에서도 사용됩니다 (파이썬 3에서는 덜 자세한 버전이 지원되지만). https://docs.python.org/2/library/functions.html#super vs https://docs.python.org/3/library/functions.html#super –

+0

고맙습니다. 며칠 전 동일한 문제가 발생했습니다. 문제 및 나는 수퍼에 대해 많이 검색했지만 그것을 밖으로 찾을 수 없습니다. 내가 편집하거나 내 대답을 제거해야합니다 버전 –

+0

위의 온? –

관련 문제