喀拉拉邦遇到一些问题。我只是试图构建模型并使其运行,然后对其进行调整。因此,可以这么说,我仅使用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具有形状(无,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)
最佳答案
您的标签(即“目标”)的形状为(99,1),因此网络应产生相同形状的输出。尝试在最后添加一个完全连接的层,例如model.add(Dense(1))
。
关于python - Keras模型的矩阵大小误差,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42308481/