在张量流中,为什么预测是二维的?

2024-09-28 21:19:38 发布

您现在位置:Python中文网/ 问答频道 /正文

当我学习Tensorflow时,我对输出层张量的维数有一个困惑。在

我正在学习如何在Tensorflow中建立多层感知器模型。我开始的代码是this one。在

简而言之,它基本上是如下框架:

def multilayer_perceptron(x, weights, biases):
    :
    :

pred = multilayer_perceptron(x, weights, biases)
    :
    :

with tf.Session() as sess:
    sess.run(init)
         :
    correct_prediction = tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1))

    accuracy = tf.reduce_mean(tf.cast(correct_prediction, "float"))
    print ("Accuracy:", accuracy.eval({x: X_test, y: y_test_onehot}))

我了解argmaxequal方法的概念。但是为什么tf.equal(tf.argmax(pred, 1), tf.argmax(y, 1))中的轴参数是1?或者说,为什么pred大于1维?对我来说,pred应该与1D数组类似。E、 g.[0,1,1,1,1]表示除第一个预测外,其他预测都是正确的。为什么我们需要一个argmax在相等的方法之前?在

谢谢你!在


Tags: 方法testtftensorflowequalsesspredictionweights
1条回答
网友
1楼 · 发布于 2024-09-28 21:19:38

当使用MLP模型进行分类时,通常最后一层是一个标准的线性层,它将最后一个隐藏层投影到输出层中。最后一个单元的数量与类的数量相同(这个输出单元通常称为logit)。在

然后,这个输出层通常被提供给一个softmax函数,该函数将最大值向上推,其他所有的都向下推。换言之,它执行一个“软”max(其中max是指到处都是零的数组,maximum元素中是一个1)。在

在代码中,多层感知器函数实际上返回logits节点。logit可以看作是每个输出类的“置信度”。最终,您将需要argmax来选择具有最高学位的类,您对该类更有信心。在

multilayer_perceptron函数返回的pred张量是[batch\u size x num_classes]。对于input中提供的每个示例,都有num_classes的置信度,并且需要一个argmax来提取正确类的索引(最大置信度)。在

请注意,这是一个多类分类问题,网络的每个输出节点都与单个类的预测有关。每个输出节点i都有一项任务,即决定输入是否属于i类。在

相关问题 更多 >