深度学习入门-百度飞浆(记录二)

随机梯度计算

梯度下降法:将所有样本对梯度的贡献取平均,根据梯度更新参数

缺点: 面对海量样本的数据集,如果每次计算都使用全部的样本来计算损失函数和梯度,性能很差(计算得慢)

改进: 反正参数每次只沿着梯度反向更新一点点,那么方向大差不差即可,每次从总数据集中随机抽取出一部分数据来代表整体,基于这部分数据计算梯度和损失函数来更新参数,称为随机梯度下降法(SGD)

mini-batch:
每次迭代抽取出来的一批数据成为一个min-batch

batch-size:
一个mini-batch所包含的样本数目

epoch:
按mini-batch逐次抽取出样本,当将整个样本集遍历一轮后,即完成了一轮训练,我们将其称为执行了一个训练的epoch

在这里插入图片描述
在这里插入图片描述
打乱样本顺序
在这里插入图片描述

使用随机梯度下降实现模型训练

# 先后将样本集合乱序和拆分批次(mini-batch)
# 获取数据
train_data, test_data = load_data()

# 打乱样本顺序
np.random.shuffle(train_data)

# 将train_data分成多个mini-batch
batch_size = 10
n = len(train_data)
mini_batches = [train_data[k:k+batch_size] for k in range(0, n, batch_size)]

# 创建网络
net = Network(13)

# 依次使用每个mini-batch的数据
for mini_batch in mini_batches:
	x = mini_batch[:, :-1]
	y = mini_batch[;, -1:]
	loss = net.train[x, y, iterations=1]

训练过程部分的修改
在这里插入图片描述
在这里插入图片描述

batch-size过大

更新次数减少,参数更新太慢,梯度精确度提高但是回报不大,

batch-size过小

可能导致loss函数震荡而不收敛,梯度不精确

求导的链式法则

在这里插入图片描述

题目:
在这里插入图片描述

深度学习框架

在这里插入图片描述
在这里插入图片描述

paddlepaddle重写房价预测

首先要加载飞浆库

import paddle
import paddle.fluid as fluid
import paddle.fluid.dygraph as dygraph
from paddle.fluid.dygraph import Linear

模型设计
类的方式,创建实例来使用模型

  1. __init__方法,声明每层的计算函数
  2. forward方法,将各层串起来实现前向计算(前向计算默认使用forward方法实现,调用模型实例时会自动调用forward方法)
  3. self.fc = 全连接层, 输入尺寸=13, 输出尺寸=1, 无非线性变换
class Regressor(fluid.dygraph.Layer):
	def __init__(self, name_scope):
		super(Regressor, self).__init__(name_scope)
		name_scope = self.full_name()
		# 定义一层全连接层, 输出维度是1, 激活函数为None, 即不使用激活函数
		self.fc = Linear(input_dim=13, output=1, act=None)
	# 网络的前向计算函数
	def forward(self, inputs):
		x = self.fc(input)
		return x
# 定义飞浆动态图的工作环境
with fluid.dygraph.guard():
	# 声明定义好的线性回归模型
	model = Regressor("Regressor")
	# 开启模型训练模式
	model.train()
	# 加载数据
	training_data, test_data = load_data()
	# 定义优化算法, 这是使用随机梯度下降-SGD
	opt = fluid.optimizer.SGD(learning_rate=0.01, parameter_list=model.parameters()

在这里插入图片描述
保存模型,再加载出来使用
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值