tensorflow多标签分类mnist

我正在尝试对mnist数据集进行序列检测。我希望在不使用RNN的情况下完成这个任务。为此,我将最多5张图片水平堆叠成一个序列,然后对其进行分类。然而,效果并不理想,准确率很低。

data = tf.placeholder(dtype=tf.float32,shape=(None, 28,140,1))tf_train_labels = tf.placeholder(dtype=tf.float32, shape=(None, 5,11))w1 = tf.Variable(tf.truncated_normal(shape=(3,3, 1,32), stddev=0.1))b1 = tf.Variable(tf.zeros(32))w2 = tf.Variable(tf.truncated_normal(shape=(3,3,32,64), stddev=0.1))b2 = tf.Variable(tf.constant(1., shape=[64]))w22 = tf.Variable(tf.truncated_normal(shape=(3,3,64,128), stddev=0.1))b22 = tf.Variable(tf.constant(1., shape=[128]))w3 = tf.Variable(tf.truncated_normal(shape=(28 // 4 * 140 // 4 * 128,1024)))b3 = tf.Variable(tf.constant(1., shape=[1024]))w4 = tf.Variable(tf.truncated_normal(shape=(1024,11), stddev=0.1))b4 = tf.Variable(tf.constant(1., shape=[11]))w5 = tf.Variable(tf.truncated_normal(shape=(1024,11), stddev=0.1))b5 = tf.Variable(tf.constant(1., shape=[11]))w6 = tf.Variable(tf.truncated_normal(shape=(1024,11), stddev=0.1))b6 = tf.Variable(tf.constant(1., shape=[11]))w7 = tf.Variable(tf.truncated_normal(shape=(1024,11), stddev=0.1))b7 = tf.Variable(tf.constant(1., shape=[11]))w8 = tf.Variable(tf.truncated_normal(shape=(1024,11), stddev=0.1))b8 = tf.Variable(tf.constant(1., shape=[11]))def model(x, w, b):    conv= tf.nn.relu(tf.nn.conv2d(x, w1, [1,1,1,1], padding="SAME")+b1)    conv = tf.nn.max_pool(conv, [1,2,2,1], [1,2,2,1], padding="SAME")    conv = tf.nn.relu(tf.nn.conv2d(conv, w2, [1,1,1,1], padding="SAME")+b2)    conv = tf.nn.max_pool(conv, [1,2,2,1], [1,2,2,1],padding="SAME")    conv = tf.nn.relu(tf.nn.conv2d(conv, w22, [1,1,1,1], padding="SAME")+b22)    shape = conv.get_shape().as_list()    reshape = tf.reshape(conv, [-1, shape[1] * shape[2] * shape[3]])    dense = tf.nn.relu(tf.matmul(reshape, w3)+b3)    return tf.matmul(dense, w) + bpred1 = model(data, w4, b4)pred2 = model(data, w5, b5)pred3 = model(data, w6, b6)pred4 = model(data, w7, b7)pred5 = model(data, w8, b8)prediction = tf.stack([        tf.nn.softmax(pred1),        tf.nn.softmax(pred2),        tf.nn.softmax(pred3),        tf.nn.softmax(pred4),        tf.nn.softmax(pred5)])loss = tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(               logits = pred1, labels = tf_train_labels[:, 0])) + \           tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(               logits = pred2, labels = tf_train_labels[:, 1])) + \           tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(               logits = pred3, labels = tf_train_labels[:, 2])) + \           tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(               logits = pred4, labels = tf_train_labels[:, 3])) + \           tf.reduce_mean(tf.nn.softmax_cross_entropy_with_logits(               logits = pred5, labels = tf_train_labels[:, 4]))optimizer = tf.train.GradientDescentOptimizer(learning_rate=0.0001).minimize(loss)init = tf.global_variables_initializer()

代码中是否存在逻辑错误,还是我只是没有训练足够长时间,或者选择了错误的模型?谢谢,最好的祝福


回答:

我通过从梯度下降法切换到Adam优化器解决了这个问题

Related Posts

如何从数据集中移除EXIF数据?

我在尝试从数据集中的图像中移除EXIF数据(这些数据将…

用于Python中的“智能点”游戏的遗传算法不工作

过去几天我一直在尝试实现所谓的“智能点”游戏。我第一次…

哪个R平方得分更有帮助?

data.drop(‘Movie Title’, ax…

使用线性回归预测GRE分数对录取率的影响

我正在学习线性回归,并尝试在Jupyter笔记本中用P…

使用mlrMBO贝叶斯优化进行SVM超参数调优时出现错误

我试图针对一个分类任务优化SVM,这个方法在许多其他模…

Keras模型的二元交叉熵准确率未发生变化

我在网上看到了很多关于这个问题的提问,但没有找到明确的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注