PyTorch 深度学习实践 第3讲

 第3讲  梯度下降法 源代码

B站 刘二大人 ,传送门PyTorch 深度学习实践 梯度下降法

深度学习算法中,并没有过多的局部最优点。

import matplotlib.pyplot as plt

# prepare the training set
x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]

# initial guess of weight 
w = 1.0

# define the model linear model y = w*x
def forward(x):
    return x*w

#define the cost function MSE 
def cost(xs, ys):
    cost = 0
    for x, y in zip(xs,ys):
        y_pred = forward(x)
        cost += (y_pred - y)**2
    return cost / len(xs)

# define the gradient function  gd
def gradient(xs,ys):
    grad = 0
    for x, y in zip(xs,ys):
        grad += 2*x*(x*w - y)
    return grad / len(xs)

epoch_list = []
cost_list = []
print('predict (before training)', 4, forward(4))
for epoch in range(100):
    cost_val = cost(x_data, y_data)
    grad_val = gradient(x_data, y_data)
    w-= 0.01 * grad_val  # 0.01 learning rate
    print('epoch:', epoch, 'w=', w, 'loss=', cost_val)
    epoch_list.append(epoch)
    cost_list.append(cost_val)

print('predict (after training)', 4, forward(4))
plt.plot(epoch_list,cost_list)
plt.ylabel('cost')
plt.xlabel('epoch')
plt.show() 

随机梯度下降法 源代码

随机梯度下降法在神经网络中被证明是有效的。效率较低(时间复杂度较高),学习性能较好。

随机梯度下降法和梯度下降法的主要区别在于:

1、损失函数由cost()更改为loss()。cost是计算所有训练数据的损失,loss是计算一个训练数据的损失。对应于源代码则是少了两个for循环。

2、梯度函数gradient()由计算所有训练数据的梯度更改为计算一个训练数据的梯度。

3、本算法中的随机梯度主要是指,每次拿一个训练数据来训练,然后更新梯度参数。本算法中梯度总共更新100(epoch)x3 = 300次。梯度下降法中梯度总共更新100(epoch)次。

import matplotlib.pyplot as plt

x_data = [1.0, 2.0, 3.0]
y_data = [2.0, 4.0, 6.0]

w = 1.0

def forward(x):
    return x*w

# calculate loss function
def loss(x, y):
    y_pred = forward(x)
    return (y_pred - y)**2

# define the gradient function  sgd
def gradient(x, y):
    return 2*x*(x*w - y)

epoch_list = []
loss_list = []
print('predict (before training)', 4, forward(4))
for epoch in range(100):
    for x,y in zip(x_data, y_data):
        grad = gradient(x,y)
        w = w - 0.01*grad    # update weight by every grad of sample of training set
        print("\tgrad:", x, y,grad)
        l = loss(x,y)
    print("progress:",epoch,"w=",w,"loss=",l)
    epoch_list.append(epoch)
    loss_list.append(l)

print('predict (after training)', 4, forward(4))
plt.plot(epoch_list,loss_list)
plt.ylabel('loss')
plt.xlabel('epoch')
plt.show() 

### 回答1: 《PyTorch深度学习实践》是由牟大恩编写的一本介绍PyTorch深度学习实践指南。这本书主要分为两部分,第一部分介绍了PyTorch的基本概念和使用方法,包括PyTorch的基本原理、张量运算、自动求导、数据集、数据加载等;第二部分涵盖了构建深度学习网络的高级主题,包括卷积神经网络、循环神经网络、生成对抗网络、迁移学习等。 《PyTorch深度学习实践》的优点在于其内容深入浅出,对于初学者也很友好。书中提供了很多实例和代码,可以帮助读者更好地理解和掌握PyTorch的使用。此外,这本书还介绍了一些实际应用案例,可以让读者了解深度学习在不同领域的应用。 如果您正在学习PyTorch深度学习,或者正在进行深度学习相关研究,那么《PyTorch深度学习实践》是一本很有价值的参考书籍。无论您是初学者还是有经验的研究人员,都可以从这本书中获得一些实用的知识和灵感。如果您对这本书感兴趣,可以在各大图书网站上下载或购买。 ### 回答2: PyTorch是近年来非常受欢迎的深度学习框架之一。而《PyTorch深度学习实践》这本书则是由牟大恩所写,是一本介绍PyTorch框架及其应用的指南。 本书主要分为三个部分:第一部分介绍了Python基础、NumPy、Tensor和PyTorch基础,这对于初学者非常重要;第二部分是深度学习PyTorch的应用,包括图像分类、预训练模型、目标检测和分割等内容;第三部分则涉及更高级的深度学习技术,如生成对抗网络、自然语言处理和强化学习。 此外,本书还提供了大量的实例代码和Jupyter笔记本,供读者练习和实践。这些案例覆盖了诸如文本分类、时间序列分析、语音识别等不同领域。 总之,如果你想学习深度学习PyTorch框架,特别是如果你已经具有Python编程经验,那《PyTorch深度学习实践》是一本非常实用的图书。它可以帮助你深入了解该框架,学习如何构建和训练深度神经网络,并通过实践掌握更高级的深度学习技巧。
评论 27
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值