DL之simpleNet:利用自定义的simpleNet(设好权重)对新样本进行预测、评估、输出梯度值

DL之simpleNet:利用自定义的simpleNet(设好权重)对新样本进行预测、评估、输出梯度值

导读
理解神经网络内部的数学机制


输出结果

输出权重参数: [[-0.94465146 -1.22617291  0.89064915]
 [-0.36625531  1.57482914  0.82170746]]
输出预测: [-0.89642065  0.68164248  1.27392621]
最大值的索引: 2
loss: 0.5111458955952319
求出梯度值: 
 [[ 0.04107652  0.19903878 -0.2401153 ]
 [ 0.06161477  0.29855818 -0.36017295]]

核心代码

class simpleNet:
    def __init__(self):
        self.W = np.random.randn(2,3)  #用高斯分布进行初始化

    def predict(self, x):
        return np.dot(x, self.W)

    def loss(self, x, t):
        z = self.predict(x)
        y = softmax(z)
        loss = cross_entropy_error(y, t)

        return loss

net = simpleNet()

x = np.array([0.6, 0.9])
p = net.predict(x)

t= np.array([0, 0, 1])
print('loss:',net.loss(x, t))

f = lambda w: net.loss(x, t)

dW = numerical_gradient(f, net.W)
print('求出梯度值:','\n',dW) 

相关文章
DL之simpleNet:利用自定义的simpleNet(设好权重)对新样本进行预测、评估、输出梯度值​​​​​​​

(0)

相关推荐