2017-02-17 4 views
1

케라와 관련하여 몇 가지 문제가 있습니다. 나는 모델을 구축하고 실행시키고 나서 그것을 조정하려하고있다. 그래서 99 개의 이미지와 99 개의 레이블만을 사용하고있다. 참고로 클래스 라벨이 아닌 지속적인 출력을주기 위해 사용하고 있습니다. 아래는 내가 사용하고있는 코드입니다. 먼저 모든 데이터를 가져 오는 스크립트가 있습니다. 99 개 이미지와 99 개 라벨.Keras 모델의 행렬 크기 오류

모델 부품의 피팅에 이르면 오류가 발생합니다. "ValueError : 모델 대상을 검사 할 때 오류가 발생했습니다. cropping2d_1에 4 차원이 있어야하지만 모양이 (99, 1) 인 배열이 있어야합니다."

비슷한 오류에 대한 다른 스레드를 읽었고 배열의 순서가 될 수도 있습니다. 나는 케라를 보내고 있습니다. 나는 그걸 가지고 놀았고 다음과 같은 것을 얻었다. 현재 이미지 배열의 모양은 (99,160,320,3)입니다. 나는 keras에서 "input_shape"의 순서를 (3,160,320)으로 변경하려고 시도했다. 이것은 나에게 오류를주었습니다. "ValueError : 모델 입력을 검사 할 때 오류가 발생했습니다 : cropping2d_input_1에 shape (None, 3, 160, 320)이 있어야하지만 모양이 배열 (99, 160, 320, 3)"이됩니다. 그런 다음 images_center 배열을 다시 모양을 바꿔서 위와 같은 오류가 발생했습니다.

여기에서는 간단히 설명하기 위해 가져온 문장을 생략했습니다.

다음 단계에 대한 의견이 있으십니까?

#Import col 3 to get a length of the dataset 
df = pd.read_csv('/Users/user/Desktop/data/driving_log.csv',usecols=[3]) 

#import and make a matrix of the file paths and data 
f = open('/Users/user/Desktop/data/driving_log.csv') 
csv_f = csv.reader(f) 
m=[] 
for row in csv_f: 
    n=(row) 
    m.append(n) 

#Create labels data 
labels=[] 
for i in range(1,100): 
    label=(m[i][3]) 
    labels.append(label) 
list1=[] 
for i in range(len(labels)): 
    ix=float(labels[i]) 
    list1.append(ix) 
labels=list1 
labels=np.array(labels) 


#Create features data 
#Loop through file paths, combine base path with folder path then read in and append 
images_center=[] 
for i in range(1,100): 
    img=(m[i][0]) 
    img=img.lstrip() 
    path='/Users/user/Desktop/data/' 
    img=path+img 
    image=cv2.imread(img) 

    images_center.append(image) 
images_center=np.array(images_center) 
print(images_center.shape) 

# Fix error with TF and Keras 
import tensorflow as tf 
tf.python.control_flow_ops = tf 
print(images_center.shape) 


model = Sequential() 
model.add(Convolution2D(16,3,3,border_mode='valid',input_shape=(160,320,3))) 


model.compile('adam','categorical_crossentropy',['accuracy']) 
history=model.fit(images_center,labels,nb_epoch=10,validation_split=0.2) 

답변

1

레이블 (예 : "대상")은 모양이 (99, 1)이므로 네트워크가 동일한 모양으로 출력해야합니다. 마지막에 완전히 연결된 레이어 (예 : model.add(Dense(1)))를 추가해보세요.