Theano:如何将所需输出(1d)和标签之间的距离实现为成本函数
Theano: How to implement the distance between desired output (1d) and label as cost function
我想训练一个神经网络来表示从 R^n 到 R 的函数。
神经元网络只有一层,输入神经元是函数参数,输出是函数值。
例如,函数可以是 "logical and":两个输入值,一个输出。
为了训练这样的网络,我需要定义一个成本函数,然后可以使用 Theano 对梯度的支持导出该函数。
问题是:
通常您会使用神经元网络进行分类。训练样本是 (input, y),其中 y 是所需的输出 = 应该具有最大似然的输出神经元的索引。
在这种情况下这是不可能的,我只有一个输出神经元,需要将其与标签进行比较=>标签不用于索引。
在伪代码中:
if y==0:
cost= - output
else:
cost= - (1-output)
使用这种方法,每个样本都必须重新计算成本。由于计算成本的公式取决于 y 的值。
我认为有必要在 theano 公式中实现选择。
类似于此伪代码:
block1= - output
block2= - (1 - output)
blockMatrix= [block1 : block2]
return blockMatrix[y]
在theano教程中,索引与差异化结合使用,所以这应该可以。
真题:
theano 中的阻塞是如何工作的?
我代码中符号的类型:输出是矩阵,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()
and theano.tensor.stack()
。
此外,您的问题还有另一种形式,可以避免调节和阻塞:
cost = -(1-y)*output -y*(1-output)
我想训练一个神经网络来表示从 R^n 到 R 的函数。 神经元网络只有一层,输入神经元是函数参数,输出是函数值。 例如,函数可以是 "logical and":两个输入值,一个输出。
为了训练这样的网络,我需要定义一个成本函数,然后可以使用 Theano 对梯度的支持导出该函数。 问题是: 通常您会使用神经元网络进行分类。训练样本是 (input, y),其中 y 是所需的输出 = 应该具有最大似然的输出神经元的索引。
在这种情况下这是不可能的,我只有一个输出神经元,需要将其与标签进行比较=>标签不用于索引。 在伪代码中:
if y==0:
cost= - output
else:
cost= - (1-output)
使用这种方法,每个样本都必须重新计算成本。由于计算成本的公式取决于 y 的值。
我认为有必要在 theano 公式中实现选择。 类似于此伪代码:
block1= - output
block2= - (1 - output)
blockMatrix= [block1 : block2]
return blockMatrix[y]
在theano教程中,索引与差异化结合使用,所以这应该可以。
真题: theano 中的阻塞是如何工作的?
我代码中符号的类型:输出是矩阵,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()
and theano.tensor.stack()
。
此外,您的问题还有另一种形式,可以避免调节和阻塞:
cost = -(1-y)*output -y*(1-output)