1

keras 有一些问题。我只是在尝试构建模型并使其运行,然后对其进行调整。也就是说,我只使用了 99 个图像和 99 个标签。作为参考,我用它来给我一个连续的输出,而不仅仅是一个类标签。下面是我正在使用的代码。首先,我有一个导入所有数据的脚本。99 张图片和 99 个标签。

当我开始安装模型部件时,它给我一个错误。“ValueError:检查模型目标时出错:预期cropping2d_1 有4 个维度,但得到了形状为(99, 1) 的数组”。

我阅读了一些关于类似错误的其他线程,似乎它可能是我发送 keras 的数组的顺序。我玩弄它并得到以下结果。目前图像数组的形状是(99,160,320,3)。我尝试将 keras 中“input_shape”的顺序更改为(3,160,320)。这给了我和错误“ValueError:检查模型输入时出错:预期cropping2d_input_1 具有形状(None、3、160、320)但得到了形状为(99、160、320、3)的数组”。然后我相应地重塑了 images_center 数组,得到了与上面相同的错误。

我省略了 import 语句,只是为了保持简短。

对接下来的步骤有什么想法吗?

#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)
4

1 回答 1

1

您的标签(即“目标”)的形状为 (99, 1),因此网络应该产生相同形状的输出。尝试在最后添加一个全连接层,例如model.add(Dense(1)).

于 2017-02-18T18:31:01.363 回答