Theano: 如何实现期望输出(一维)与标签之间的距离作为成本函数

我想训练一个神经网络来表示从R^n到R的函数。这个神经网络只有一个层,输入神经元是函数的参数,输出是函数的值。例如,函数可以是“逻辑与”:两个输入值,一个输出值。

为了训练这样的网络,我需要定义一个成本函数,然后利用Theano对梯度的支持进行推导。问题在于:通常你会使用神经网络进行分类。一个训练样本是(输入,y),其中y是期望输出=应该具有最大似然性的输出神经元的索引。

在这种情况下,这是不可能的,我只有一个输出神经元,需要将其与标签进行比较=>标签不用于索引。伪代码如下:

if y==0:   cost= - outputelse:   cost= - (1-output)

使用这种方法,每个样本都需要重新计算成本。因为计算成本的公式依赖于y的值。

我认为有必要在theano公式中实现选择。类似于这个伪代码:

block1= - outputblock2= - (1 - output)blockMatrix= [block1 : block2]return blockMatrix[y]

在theano教程中,索引与微分结合使用,因此这应该可行。

实际问题:Theano中的阻塞是如何工作的?

我的代码中符号的类型:output是一个矩阵,y是一个向量。样本是这样创建的,一行是一个样本。

data_x = numpy.matrix([[0, 0],                       [1, 0],                       [0, 1],                       [1, 1]])data_y = numpy.array([0,                      0,                      0,                      1])

完整代码在pastebin上:http://pastebin.com/PByUyvMQ它基本上与这个教程完全相同:http://deeplearning.net/tutorial/logreg.html


回答:

我不太确定阻塞的确切含义,但对于简单地连接两个张量变量,有theano.tensor.concatenate()theano.tensor.stack()

此外,你的问题还有另一种表述方式,可以避免条件和阻塞:

cost = -(1-y)*output -y*(1-output)

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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