分类图像,Tensorflow,准确率卡在10%



我实际上是在为我的IT研究做CINIC-10分类图像挑战。

我以前从未有过深度学习的经验,所以我通过一些youtube视频学习了它。

我第一次尝试使用MNIST数据集来手写数字,并从中获得了很好的体验。我的模型有92%的预测机会,而且效果很好。

现在我正在尝试对一些图像进行分类,即使我使用来自Keras的不同模型,我的训练模型的准确率也不会超过10%。

我是这样做的:

首先我加载我的Dasasets,我有一个火车数据集和一个验证数据集。

# loading in the data
train_ds = tf.keras.preprocessing.image_dataset_from_directory(
cinic_directory_train,
validation_split=0.2,
subset="training",
seed=123,
image_size=(32, 32),
batch_size=16
)
validation_ds = tf.keras.preprocessing.image_dataset_from_directory(
cinic_directory_train,
validation_split=0.2,
subset="validation",
seed=123,
image_size=(32, 32),
batch_size=16  
)

我可以得到我的类名

class_names= train_ds.class_names
print(class_names)
Output :
['airplane', 'automobile', 'bird', 'cat', 'deer', 'dog', 'frog', 'horse', 'ship', 'truck']

这是我的模型构造:

model = keras.Sequential([
keras.layers.experimental.preprocessing.Rescaling(1./255),
keras.layers.Conv2D(16, 3, padding='same', activation='relu'),
keras.layers.MaxPooling2D(),
keras.layers.Conv2D(32, 3, padding='same', activation='relu'),
keras.layers.MaxPooling2D(),
keras.layers.Conv2D(64, 3, padding='same', activation='relu'),
keras.layers.MaxPooling2D(),
keras.layers.Dropout(0.2),
keras.layers.Flatten(),
keras.layers.Dense(128, activation='relu'),
keras.layers.Dense(10)
])
model.compile(
optimizer='adam',  #Fonction d'optimisation
loss='sparse_categorical_crossentropy', 
metrics=['accuracy']
)

当我开始火车会话

history = model.fit( 
train_ds, 
validation_data=validation_ds, 
epochs=3 
)

我的精度在0.09和0.10之间卡住

我甚至测试了我朋友的代码,我一直得到相同的准确率,除了他们的准确率是30-50%。

我用的是google Collabs。

我尝试了所有这些模型,我一直得到低精度:

  • VVG16 =比;9%
  • Resnet50 =比;9%
  • DenseNEt =比;8%
  • EfficientNet =比;2%
  • MobileNet =比;9%

我找不到我的问题和如何解决它!

你的最后一层应该是

keras.layers.Dense(10. activation='softmax')

最新更新