Theano入门神经网络(四)

时间:2023-11-25 19:32:20

这一部分主要介绍用Theano 实现softmax函数。

在多分类任务中经常用到softmax函数,首先上几个投影片解释一下

Theano入门神经网络(四)

假设目标输出是y_hat ,激活函数后的Relu y 一个是1.2 一个是2 ,到底哪一个更好一点 是1.2与1 更加接近?还是2 意味这更大的概率呢?

基于这个原因,我们提出了softmax

Theano入门神经网络(四)

将得到的输出进行指数运算,转化为其概率。越大的数值,代表其类别的可能性越大。

上个代码:

 x= T.vector();
W= T.matrix();
z = T.dot(W,x)
#y = 1.0/(1.0+np.exp(-z))
y = np.exp(z)/T.sum(np.exp(z), axis=0) # 0 是按列 1 是按行
log_activation = theano.function(inputs=[W,x],outputs=y) x = np.array([1 ,1.4 ,1.5],dtype=theano.config.floatX)
W = np.array([[1.1,1.2,1.3],[0.1,0.2,0.4],[0.2,0.5,2.1]],dtype=theano.config.floatX) for i in range(x.shape[0]):
print '第 %d 的 log_activation 的输出是 %.2f ' %( i+1, log_activation(W,x)[i]) c=log_activation(W,x)
y_class = np.argmax(c,axis=0)
print y_class+1

一般来说 softmax 函数和 交叉熵损失一起使用

Theano入门神经网络(四)

Theano入门神经网络(四)