【发布时间】:2021-05-14 02:35:41
【问题描述】:
我有一个多类问题 (n=3),我的验证准确性总是卡住。可能是因为我没有足够的样本(每班只有 32 个)。这些图像包含 3 个我需要分类的不同对象,它们是从相同距离以 90° 视角拍摄的,它们位于桌子上。我希望由于任务简单,这么多照片就足够了,但也许我确实需要更多。我会简单地移动对象以创建更多图像还是没用?
我的模特:
import random
def make_model(input_shape, num_classes):
with tf.device('/device:GPU:0'):
inputs = keras.Input(shape=input_shape)
# Image augmentation block
x = data_augmentation(inputs)
x = inputs
# Entry block
x = layers.experimental.preprocessing.Rescaling(1.0 / 255)(x)
#x = x* random.uniform(0, 2)
x = layers.Conv2D(32, 3, strides=2, padding="same")(x)
x = layers.BatchNormalization()(x)
x = layers.Activation("relu")(x)
x = layers.Conv2D(64, 3, padding="same")(x)
x = layers.BatchNormalization()(x)
x = layers.Activation("relu")(x)
previous_block_activation = x # Set aside residual
for size in [128, 256, 512, 728]:
x = layers.Activation("relu")(x)
x = layers.SeparableConv2D(size, 3, padding="same")(x)
x = layers.BatchNormalization()(x)
x = layers.Activation("relu")(x)
x = layers.SeparableConv2D(size, 3, padding="same")(x)
x = layers.BatchNormalization()(x)
x = layers.MaxPooling2D(3, strides=2, padding="same")(x)
# Project residual
residual = layers.Conv2D(size, 1, strides=2, padding="same")(
previous_block_activation
)
x = layers.add([x, residual]) # Add back residual
previous_block_activation = x # Set aside next residual
x = layers.SeparableConv2D(1024, 3, padding="same")(x)
x = layers.BatchNormalization()(x)
x = layers.Activation("relu")(x)
x = layers.GlobalAveragePooling2D()(x)
activation = "softmax"
units = num_classes
x = layers.Dropout(0.2)(x)
outputs = layers.Dense(units=3, activation=activation)(x)
return keras.Model(inputs, outputs)
model = make_model(input_shape=image_size + (3,), num_classes=3)
#keras.utils.plot_model(model, show_shapes=True)
我的训练:
epochs = 10
callbacks = [
keras.callbacks.ModelCheckpoint("save_at_{epoch}.h5"),
]
model.compile(
optimizer=keras.optimizers.Adam(1e-5),
loss="categorical_crossentropy",
metrics=["accuracy"],
)
model.fit(
train_ds, epochs=epochs, callbacks=callbacks, validation_data=val_ds,
)
【问题讨论】:
标签: tensorflow keras deep-learning conv-neural-network multiclass-classification