带有多标签分类的keras模型.fit

时间:2019-07-05 02:59:00

标签: python tensorflow keras

我正在尝试学习如何在此处看到的模型上实现自己的数据集: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
]

还是我也误会了吗?

1 个答案:

答案 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在两个参数中都是相同的。您需要注意确保图像和标签的数量相等。

希望有帮助。