如何使用 numpy 标记图像进行训练
How to label images for training using numpy
我有自己的数据集,其中包含 2000 张我想要标记的图像。首先,我创建了包含标签(0 或 1)的 numpy 数组。例如,对于 image[0],相应的标签将是 label[0]。请注意,我不确定这是否是正确的标记方式。
model= VGG16(include_top=False, input_shape= (32,32,3))
model.summary()
model.compile(optimizer="Adam", loss="binary_crossentropy" , metrics=['accuracy'])
epochs = 10
history = model.fit(x=training_ds, y=training_lb , epochs=epochs, validation_data= (testing_ds, testing_lb) )
training_ds 包含形状为 (n,32,32,3) 的所有图像
training_lb 包含形状为 (n,1) 的标签
和测试相同。
在运行之后我的代码出错了,损失非常大而且没有学到任何东西。我的标签有误吗?
输出:
我认为您的准确度为 0,因为您的模型没有输出密集层。像这样使用它:
import tensorflow as tf
base_model= VGG16(include_top=False, input_shape= (32,32,3))
model = tf.keras.models.Sequential()
model.add(base_model)
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dropout(0.2))
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
而且我认为您的标签没有任何问题。但这是非常耗时的。相反,您可以只创建两个不同的文件夹并将这些文件夹重命名为标签,即 1 和 0。然后将这些图像添加到特定文件夹中。然后使用TensorFlow的ImageDataGenerator
加载它们。
我有自己的数据集,其中包含 2000 张我想要标记的图像。首先,我创建了包含标签(0 或 1)的 numpy 数组。例如,对于 image[0],相应的标签将是 label[0]。请注意,我不确定这是否是正确的标记方式。
model= VGG16(include_top=False, input_shape= (32,32,3))
model.summary()
model.compile(optimizer="Adam", loss="binary_crossentropy" , metrics=['accuracy'])
epochs = 10
history = model.fit(x=training_ds, y=training_lb , epochs=epochs, validation_data= (testing_ds, testing_lb) )
training_ds 包含形状为 (n,32,32,3) 的所有图像 training_lb 包含形状为 (n,1) 的标签
和测试相同。
在运行之后我的代码出错了,损失非常大而且没有学到任何东西。我的标签有误吗?
输出:
我认为您的准确度为 0,因为您的模型没有输出密集层。像这样使用它:
import tensorflow as tf
base_model= VGG16(include_top=False, input_shape= (32,32,3))
model = tf.keras.models.Sequential()
model.add(base_model)
model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dropout(0.2))
model.add(tf.keras.layers.Dense(1, activation='sigmoid'))
而且我认为您的标签没有任何问题。但这是非常耗时的。相反,您可以只创建两个不同的文件夹并将这些文件夹重命名为标签,即 1 和 0。然后将这些图像添加到特定文件夹中。然后使用TensorFlow的ImageDataGenerator
加载它们。