2017-02-17 16 views
1

Наличие некоторых проблем с keras. Я просто пытаюсь создать модель и запустить ее, а затем настроить ее. Так что, говоря, что я использую только 99 изображений и 99 ярлыков. Для справки я использую его, чтобы дать мне непрерывный вывод не только метки класса. Ниже приведен код, который я использую. Сначала у меня есть скрипт, который импортирует все данные. 99 изображений и 99 ярлыков.Ошибка размера матрицы с помощью Keras Модель

Когда я подхожу к подгонке части модели, она бросает мне сообщение об ошибке. «ValueError: ошибка при проверке целевой модели: ожидается, что cropping2d_1 имеет 4 измерения, но получил массив с формой (99, 1)».

Я прочитал некоторые другие темы о подобных ошибках, и, похоже, это может быть порядок массива, который я отправляю keras. Я играл с ним и получил следующее. В настоящее время форма массива изображений (99,160,320,3). Я попытался изменить порядок «input_shape» в keras на (3,160,320). Это дало мне и ошибку «ValueError: ошибка при проверке ввода модели: ожидается, что cropping2d_input_1 имеет форму (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)).