首页 文章

在Tensorflow中使用离散标签进行分类

提问于
浏览
0

我正在尝试使用Tensorflow进行分类的一个非常简单的例子 . 而不是使用单热矢量,tf.nn.softmax和带有logits的crossentropy损失 . 我想使用0/1标签的离散情况 . 其中NN模型的输出为0或1.因此我做了像这样的y_ = tf.nn.sigmoid(tf.matmul(hidden,weight2)bias2)y_ = tf.cast(tf.greaterequal(y,0.5) ),tf.float32)所以这会给出0或1的张量 . 但是当我尝试训练时,这给了我一个错误,说没有提供梯度 . 这是完整的代码 . https://gist.github.com/kris-singh/54aecbc1d61f1d7d79a43ae2bfac8516我的问题是我想要做的是否有可能?如果有,怎么样?

2 回答

  • 0

    我认为评论回答了问题 .

  • 0

    您绝对可以训练网络,但您需要删除铸造操作员 . 在那里使用sigmoid允许网络反向传播来自分类训练示例的错误 . 如果要对预测器中出现的预测进行二值化以分析准确性,您绝对可以这样做,但不能作为网络体系结构的集成部分 .

    这种方法实际上很常见 - 对于多类架构,softmax层产生的概率向量就是网络训练的概率向量 . 当使用它来预测类时,通常你会看到人们采用输出的概率向量并将其强制转换为单热矢量(或者只使用argmax获取最大预测值的索引) . 但是为了反向传播工作,它必须能够在输出处计算误差的梯度,这排除了使用舍入(或任何其他这样的阶梯函数)作为网络的组成部分 .

相关问题