我正在尝试学习如何在此处看到的模型上实现自己的数据集:resnet ,这只是一个用keras编写的resnet模型。在代码中,他们写了这一行
(x_train, y_train), (x_test, y_test) = cifar10.load_data()
,然后使用相应的数据将“类向量转换为二进制类矩阵”。
y_train = keras.utils.to_categorical(y_train, num_classes)
y_test = keras.utils.to_categorical(y_test, num_classes)
,然后将这些值传递给构建模型的拟合函数:
model.fit(x_train, y_train,
batch_size=batch_size,
epochs=epochs,
validation_data=(x_test, y_test),
shuffle=True,
callbacks=callbacks)
我相信我可以通过执行类似的操作来创建x_train(假设我有一个图像路径数组):
#pseudocode
x_train = nparray
for image in images:
im = PIL.Image.open(image).asNumpy()
x_train.append(im)
以上正确吗?
对于y_train,我不太了解正在传递给model.fit的内容,它是一个由一个热编码数组组成的数组吗?因此,如果我有3张图片包含;猫和狗,狗,猫分别将y_train设为
[
[1, 1, 0],#cat and dog
[0, 1, 0],#dog
[1, 0, 0]#cat
]
还是我也误会了吗?
答案 0 :(得分:0)
因此,model.fit()
期望x_train
作为特征,y_train
作为特定分类问题的标签。我将考虑多类图像分类。
x_train
:对于图像分类,此参数的形状为(num_images, width, height, num_channels )
。 num_images
是指训练批次中存在的图像数量。参见here。
y_train
:标签是一键编码的。所需的形状为(num_images, num_classes )
。
请注意,
num_images
在两个参数中都是相同的。您需要注意确保图像和标签的数量相等。
希望有帮助。