2017-12-26 17 views
0

, 내 데이터는이keras 입력 데이터에 대해 numpy 배열로 목록을 가져 오는 것에 대한 해결 방법은 무엇입니까? 내가 keras에 CNN 모델을 양성하기 위해 노력하고있어

type(datain) 
<class 'list'> 
len(datain) 
35000 
type(datain[0]) 
<class 'numpy.ndarray'> 
datain[0].shape 
(256,256,1) 

그리고있는 내 입력 데이터처럼 네트워크

AttributeError: 'list' object has no attribute 'shape' 
를 양성하는 노력이 오류가 배열의 목록을 본다

np.array(datain)과 같은 것을 시도 할 때 https://github.com/keras-team/keras/issues/4823 컴퓨터가 멈추거나 충돌합니다. 파이썬 목록을 사용하여 입력을 정의하는 데는 총 60 초가 걸리지 만 처음부터 numpy 배열로 시도했지만 (256,256,1) 배열 당 1 초 걸리며 많은 네트워크 테스트와 수정을 수행하는 데 너무 많은 시간이 걸린다. ,
이 문제에 대한 해결 방법이 있습니까?
케라 용 목록을 사용하는 방법은 무엇입니까?
숫자가 다른 배열을 정의하는 다른 방법은 무엇입니까?
또는 내가 오해하고 있습니까?

+0

이 컴퓨터의 메모리에 너무 많이있을 수 있습니다. 발전기와 협력하십시오. –

+0

발전기는 무엇을 의미합니까? – Boris

+2

'np_data = np.array (datain [: 100])'와 같은 작은 양의 데이터를 먼저 시도해보고 오류가 계속 발생하는지 확인하십시오. –

답변

1

데이터에서 생성기 생성.

generator은 파이썬 개념으로 반복되어 결과를 산출합니다. Keras의 경우 발전기는 X_trainy_train의 배치를 무한정 산출해야합니다.

그래서, 당신이 할 수있는 간단한 발전기입니다

def generator(batch_size,from_list_x,from_list_y): 

    assert len(from_list_x) == len(from_list_y) 
    total_size = len(from_list_x) 

    while True #keras generators should be infinite 

     for i in range(0,total_size,batch_size): 
      yield np.array(from_list_x[i:i+batch_size]), np.array(from_list_y[i:i+batch_size]) 

훈련에 발전기를 사용

model.fit_generator(generator(size,datain,dataout), 
        steps_per_epoch=len(datain)//size, 
        epochs=...,...)