python神经网络算法教程_基于Python的深度学习入门------梯度法神经网络学习

通过学习阅读图灵图书的《深度学习入门》,对梯度法的深度学习的个人理解如下:

神经网络的学习步骤:

步骤一.从训练数据中随机选出一部分数据,成为mini-batch。训练的目标就是减小mini-batch的损失函数的值;

步骤二.对损失函数求各个权重参数的偏导数,即梯度。梯度即表示损失函数的值减少最多的方向;

步骤三.将权重参数沿梯度方向进行微小更新;

步骤四.重复步骤1,2,3

结合上面的学习步骤,具体的任务如下:

准备:开始实例化神经网络类,确定开始设定的权重参数,使用高斯分布的随机数进行初始化;设置合适的学习率和循环次数

步骤一:选取mini-batch时,采用随机数选择;

步骤二:求梯度时,首先确定清楚是对损失函数求各个偏重参数的偏导数,损失函数loss(self, x, t)常用交叉熵误差cross_entropy_error(y, t),而交叉熵误差函数的参数为神经网络输出y和监督数据t;而y需要调用预测函数predict(self, x),预测函数主要实现神经元矩阵与权重函数矩阵的点乘加上偏置参数,隐藏层的激活函数为sigmoid()函数,输出层为softmax()函数。求梯度时的函数的参数为:损失函数,权重参数,输出权重参数的梯度;

2层神经网络的类如下

class TwoLayerNet:

def __init__(self, input_size, hidden_size, output_size, weight_init_std=0.01):

# 初始化权重

self.params = {}

self.params['W1'] = weight_init_std * np.random.randn(input_size, hidden_size)

self.params['b1'] = np.zeros(hidden_size)

self.params['W2'] = weight_init_std * np.random.randn(hidden_size, output_size)

self.params['b2'] = np.zeros(output_size)

def predict(self, x):

W1, W2 = self.params['W1'], self.params['W2']

b1, b2 = self.params['b1'], self.params['b2']

a1 = np.dot(x, W1) + b1

z1 = sigmoid(a1)

a2 = np.dot(z1, W2) + b2

y = softmax(a2)

return y

# x:输入数据, t:监督数据

def loss(self, x, t):

y = self.predict(x)

return cross_entropy_error(y, t)

def accuracy(self, x, t):

y = self.predict(x)

y = np.argmax(y, axis=1)

t = np.argmax(t, axis=1)

accuracy = np.sum(y == t) / float(x.shape[0])

return accuracy

# x:输入数据, t:监督数据

def numerical_gradient(self, x, t):

loss_W = lambda W: self.loss(x, t)

grads = {}

grads['W1'] = numerical_gradient(loss_W, self.params['W1'])

grads['b1'] = numerical_gradient(loss_W, self.params['b1'])

grads['W2'] = numerical_gradient(loss_W, self.params['W2'])

grads['b2'] = numerical_gradient(loss_W, self.params['b2'])

return grads

步骤三:更新权重参数

# 更新参数

for key in ('W1', 'b1', 'W2', 'b2'):

network.params[key] -= learning_rate * grad[key]

步骤四:从第一步开始,重新随机选择mini-batch,应用上一轮更新后的权重参数,求梯度,再次更新。。。准备工作中设置了循环次数。

以上为个人学习理解,能力有限,错误之处欢迎各位朋友批评指正!一起学习!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
《零基础入门深度学习(5) - 循环神经网络.pdf》是一本介绍深度学习中的循环神经网络学习指南。循环神经网络是一种能够处理时间序列数据的机器学习模型,广泛应用于语言处理、自然语言生成、图像处理等领域。 该书以零基础入门为出发点,逐步介绍了深度学习和循环神经网络的基本概念和原理,并通过实例演示了如何使用Python和常见的深度学习框架来构建和训练循环神经网络模型。 书中首先介绍了循环神经网络的基本结构和原理,包括循环单元的作用和实现方式。然后详细介绍了常见的循环神经网络模型,如LSTM和GRU,并解释了它们在处理长序列数据时的优势。 接下来,书中提供了大量的代码实例,帮助读者了解如何使用Python深度学习框架来构建循环神经网络模型。这些实例包括文本情感分析、机器翻译、股票预测等应用场景,涵盖了循环神经网络在不同领域中的应用。 此外,该书还提供了一些常用的训练技巧和调参方,帮助读者提高模型的性能和稳定性。最后,书中还介绍了一些最新的研究进展和发展趋势,帮助读者了解循环神经网络领域的最新动态。 总之,该书通过简单易懂的语言、清晰的实例和详细的代码解释,帮助读者快速入门深度学习中的循环神经网络。无论是初学者还是有一定基础的读者,都能从中获得实用的知识和技能,为在深度学习领域取得进一步的研究和实践打下坚实的基础。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值