gpt4 book ai didi

machine-learning - keras 模型 fit_generator ValueError : Error when checking model target: expected cropping2d_4 to have 4 dimensions, 但得到形状为 (32, 1) 的数组

转载 作者:行者123 更新时间:2023-11-30 08:46:35 25 4
gpt4 key购买 nike

我正在尝试使用 keras model.fit_generator() 来拟合模型,以下是我对生成器的定义:

from sklearn.utils import shuffle
IMG_PATH_PREFIX = "./data/IMG/"
def generator(samples, batch_size=64):
num_samples = len(samples)
while 1: # Loop forever so the generator never terminates
shuffle(samples)
for offset in range(0, num_samples, batch_size):
batch_samples = samples[offset:offset+batch_size]

images = []
angles = []
for batch_sample in batch_samples:
name = IMG_PATH_PREFIX + batch_sample[0].split('/')[-1]

center_image = cv2.imread(name)
center_angle = float(batch_sample[3])

images.append(center_image)
angles.append(center_angle)

X_train = np.array(images)
y_train = np.array(angles)

#X_train = np.expand_dims(X_train, axis=0)
#y_train = np.expand_dims(y_train, axis=1)
print("X_train shape: ", X_train.shape, " y_train shape:", y_train.shape)
#print("X train: ", X_train)
yield X_train, y_train

train_generator = generator(train_samples, batch_size = 32)
validation_generator = generator(validation_samples, batch_size = 32)

这里的输出形状是:X_train 形状:(32, 160, 320, 3) y_train 形状:(32,)

模型拟合代码是:

model = Sequential()
#cropping layer
model.add(Cropping2D(cropping=((50,20), (1,1)), input_shape=(160,320,3), dim_ordering='tf'))
model.compile(loss = "mse", optimizer="adam")
model.fit_generator(train_generator, samples_per_epoch= len(train_samples), validation_data=validation_generator, nb_val_samples=len(validation_samples), nb_epoch=3)

然后我收到错误消息:

ValueError:检查模型目标时出错:预期cropping2d_6 有 4 个维度,但得到形状为 (32, 1) 的数组

有人可以帮我知道问题出在哪里吗?

最佳答案

这里最大的问题是:你知道你想做什么吗?

1) 如果您阅读 here ,输入是 4D 张量,输出也是 4D 张量。您的目标是形状为 (batch_size,1) 的二维张量。因此,当然,当 keras 尝试计算具有 3D(没有批量维度)的输出和具有 1D(没有批量维度)的目标之间的误差时,这是没有意义的。输出和目标必须具有相同的尺寸。

2)你知道cropping2D实际上在做什么吗?它正在裁剪您的图像...因此删除裁剪尺寸开头和结尾的值。在您的情况下,您输出形状为 (90, 218, 3) 的图像。这不是预测,该层没有可训练的权重,因此没有理由拟合“模型”。您的模型只是裁剪图像。无需任何培训。

关于machine-learning - keras 模型 fit_generator ValueError : Error when checking model target: expected cropping2d_4 to have 4 dimensions, 但得到形状为 (32, 1) 的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42385106/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com