在将我的问题标记为重复之前,我想说我已经尝试了类似问题中提到的所有可能的解决方案,但这似乎不起作用。
我目前正在研究血细胞分类问题,我们基本上必须对血液图像(4类)进行分类。该数据集由 9957 张图像组成,所有 4 个类别的图像数量几乎相等。即使在尝试了不同的优化器和学习率之后,准确率也始终徘徊在 25-27% 左右。我什至尝试训练多达 100 个 epoch。图像增强没有帮助。此外,它并不是为所有图像预测相同的类别,尽管对于 1 个特定批次的图像,它预测相同的类别。它再次为下一批中的所有图像预测其他类别。所以,我只想知道,我可能做错了什么?数据集是否不够,或者架构应该有更多的隐藏层,或者我没有正确实现优化器或损失函数,或者我在代码中忽略了任何愚蠢的错误?
我的 CNN 架构:(fs 表示 filter_size,nf 表示过滤器数量,s 是 no.strides)
Input(80,80,1)->Conv(fs = 3, nf = 80, s = [1,1,1,1])
Activation(LeakyReLU)->Conv(fs = 3,nf=64,s=[1,1,1,1])
Activation(LReLU)->Pool(ps = [1,2,2,1],s=[1,2,2,1]
Conv(fs = 3,nf = 64,s=[1,1,1,1])->Activation(LReLU)
Dropout(prob = 0.75)->Flatten
FullyConnected(output_features = 128)->Dropout(prob = 0.5)
FullyConnected(output_features = 4)
loss_value = tf.reduce_mean(loss_fn)
optimizer = tf.train.AdamOptimizer()
loss_min_fn = optimizer.minimize(loss = loss_value)
check_prediction = tf.equal(tf.argmax(y,axis=1),y_pred)
model_accuracy = tf.reduce_mean(tf.cast(check_prediction, tf.float32)
sess.run(loss_min_fn, feed_dict = {x:X_train_batch, y:y_train_batch})
train_accuracy = train_accuracy + sess.run(model_accuracy, feed_dict={x : X_train_batch,y:y_train_batch})
train_loss = train_loss + sess.run(loss_value, feed_dict={x : X_train_batch,y:y_train_batch})



