【问题标题】:Value error in keraskeras中的值错误
【发布时间】:2017-03-14 09:55:54
【问题描述】:

大家好,请问有人可以帮我解决我的代码,找不到要更改的内容。请帮帮我,因为我是使用深度学习的新手。我知道形状是问题,但我不知道在 keras 中将其更改为什么或如何更改

import csv
import cv2
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

lines=[]
with open('/home/charan/Desktop/Car/Term1/CarND-Behavioral-Cloning-P3/data/data/driving_log.csv') as csvfile:
    reader = csv.reader(csvfile)
    #read = pd.read_csv(csvfile)
    for line in reader:
       lines.append(line)
images = []
measurements = []
for line in lines:
    source_path = line[0]
    #print(source_path)
    filename = source_path.split('/')[-1]
    current_path = "/home/charan/Desktop/Car/Term1/CarND-Behavioral-Cloning-P3/output/IMG/" + filename
    image = cv2.imread(current_path)
    img = images.append(image)
    measurement = float(line[3])
    measurements.append(measurement)
X_train = np.array(images) 
y_train = np.array(measurements)

from keras.models import Sequential
from keras.layers import Flatten, Dense

model = Sequential()
model.add(Flatten(input_shape=(160,320,3)))
model.add(Dense(1))
model.compile(loss='mse', optimizer='adam')

model.fit(X_train, y_train, validation_split=0.2, shuffle=True, nb_epoch=7)
model.save('model.h5')

我收到这样的值错误:

ValueError: Error when checking model input: expected lambda_input_2 to have 3 dimensions, but got array with shape (8037, 1) 

排队

---> 50 model.fit(X_train, y_train, validation_split=0.2, shuffle=True)

【问题讨论】:

  • 你能打印出X_train的第一行吗?
  • 您缺少 Z_train 或第三轴。它告诉您该函数需要 3 个参数,但您已经传递了 2 个。
  • @MarcinMożejko 如果我打印 X_train 我将它作为无
  • @MarcinMożejko 我能够打印整个图像
  • @MarcinMożejko 感谢您的指点帮助我解决了问题

标签: python deep-learning keras


【解决方案1】:

问题可能出在您的图片大小上。 如果不是所有图像的大小都相同,则 X_train 的形状将与模型的输入不匹配。

尝试将所有图像调整为相同大小,如下所示:

改变这个:

image = cv2.imread(current_path)

进入:

image = cv2.resize(cv2.imread(current_path),(256,256))

还有这个:

model.add(Flatten(input_shape=(160,320,3)))

进入:

model.add(Flatten(input_shape=(256,256,3)))

【讨论】:

  • 图像与 flatten 的图像相同,但由于 y_train 显示值错误这是我收到的错误ValueError: Error when checking model input: expected flatten_input_4 to have 4 dimensions, but got array with shape (8037, 1)。我使用 X_train[1].shape 来确认形状
  • 我设法通过两种方式重现了您的问题:第一种是如果我在 imread 中的一个图像名称中添加错误。第二个是拥有不同尺寸的图像(您需要一张不同尺寸的图片才能导致问题,这就是为什么检查 X_train[1].shape 并不能真正告诉您是否存在问题)。跨度>
  • 当我调用 X_train 的每个元素时,图像返回正确的形状,但是当我清楚地打印出 X_train 的形状时,它显示为 (8037,1) 的数组。 numpy数组有问题???
  • X_train 的路径出错。我将其删除并刷新了路径。成功了
  • 我得到了答案,将代码链接到图像文件夹时出现问题。我更换了它,它就像一个魅力谢谢大家
猜你喜欢
  • 1970-01-01
  • 2018-09-15
  • 2022-01-20
  • 2018-07-24
  • 1970-01-01
  • 1970-01-01
  • 2018-09-18
  • 1970-01-01
  • 2018-06-09
相关资源
最近更新 更多