Tensorflow CNN的设计模型体系结构

Tensorflow CNN的设计模型体系结构,tensorflow,machine-learning,keras,conv-neural-network,Tensorflow,Machine Learning,Keras,Conv Neural Network,我想为有300个类的数据集设计CNN。我已经用下面的模型测试了两个类。它具有很好的准确性 model = Sequential([ Conv2D(16, 3, padding='same', activation='relu', input_shape=(IMG_HEIGHT, IMG_WIDTH ,3)), MaxPooling2D(), Conv2D(32, 3, padding='same', activation='relu'), MaxPooling2D(), Conv2D(64, 3

我想为有300个类的数据集设计CNN。我已经用下面的模型测试了两个类。它具有很好的准确性

model = Sequential([
Conv2D(16, 3, padding='same', activation='relu', input_shape=(IMG_HEIGHT, IMG_WIDTH ,3)),
MaxPooling2D(),
Conv2D(32, 3, padding='same', activation='relu'),
MaxPooling2D(),
Conv2D(64, 3, padding='same', activation='relu'),
MaxPooling2D(),
Flatten(),
Dense(512, activation='relu'),
Dense(1, activation='sigmoid')
])

但是我增加了5个类的数量,精确度下降到0.2左右。如何为300个类设计CNN体系结构?

为了在超过2个类的数据集上执行训练,您需要使用分类熵损失和softmax激活层作为最后一个密集层

最后一个密度的神经元数量将决定你想要预测的类别数量,因此如果你有300个类别,它将如下所示:

[…]
MaxPoolig2D(),
展平(),
稠密(512,活化='relu'),
密集型(300,激活='softmax')
])
此外,您拥有的类越多,模型就越难了解每个类的特性。因此,您需要增加它的宽度(更多的过滤器)、深度(更多的卷积块)或分辨率(更大的输入)

这是设计CNN模型的一个好的开始,我们来看看VGG体系结构和它的卷积结构


希望它能帮助你有一些直觉。

你到底是什么?也许你坚持使用独立的二进制单位而不是softmax?这不是一个编程问题,你也可以先看看ImageNet数据集(1000类)的神经网络架构,您可以通过
tf.keras.applications
module尝试各种预先训练的模型,如VGG和Inception。是否有任何方法可以确定cnn的适当宽度。不幸的是,没有,但不要尝试重新发明轮子,尝试适用于SOTA算法的方法,从简单开始,然后再复杂化。同样,VGG体系结构是从VGG开始的一个非常好的开端。文件说它可以用于1000个班级。但是,当我在200门课上使用它时,它的准确度非常低。