IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 《PyTorch深度学习实践》 课堂笔记 Lesson3 -> 正文阅读

[人工智能]《PyTorch深度学习实践》 课堂笔记 Lesson3


1.梯度下降的方式

区别梯度下降随机梯度下降(SGD)
特点一大块数据一起操作小块数据分开操作
性能(越高越好)
时间复杂度(越低越好)

2.朴素梯度下降

# -*- coding:utf-8 -8-
"""
Author: Leung
Date: 2021--08--01
"""
import matplotlib.pyplot as plt
import numpy as np

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

w = 1  # 初始化
a = 0.01  # 学习速率


def forward(x):
    return w * x


def cost(xs, ys):
    cost_sum = 0
    assert (len(xs) == len(ys));  # 确定长度相等

    for x_val, y_val in zip(xs, ys):
        y_pred = forward(x_val)
        cost_sum += (y_pred - y_val) * (y_pred - y_val)
    return cost_sum / len(ys)


def back_prog(xs, ys):
    sum_grad = 0

    assert (len(xs) == len(ys))

    for x_val, y_val in zip(xs, ys):
        y_pred = forward(x_val)
        sum_grad += 2 * x_val * (y_pred - y_val)

    delta_w = a * sum_grad / len(ys)

    return delta_w


print("Gradient decent begins...")

cost_vector = []
w_vector = []

for epoch in range(100):
    w_vector.append(w)

    # 计算此时的损失函数
    cost_val = cost(x_data, y_data)
    cost_vector.append(cost_val)

    # 更新w
    delta_w = back_prog(x_data, y_data)
    w = w - delta_w


    print("\t 第", epoch, "次迭代 ", " cost_val = ", cost_val);

x_ax = np.arange(1,101)
# print(x_ax[0])

plt.plot(x_ax, cost_vector)
plt.xlabel("epoch")
plt.ylabel('value_y')
plt.show()

print("the final w: ",w_vector[len(w_vector)-1])


运行结果

1


3.随机梯度下降(SGD)

随机梯度下降(Stochastic Gradient Decent)可以在下降的过程中随机地加入一些白噪声,使得我们的在遇到鞍点的情况下仍然能够继续迭代前进(鞍点处的梯度为零,可以类比于 y = x 3 , x = 0 y=x^3,x=0 y=x3x=0处的导数)

4
上图为鞍点示意图

# -*- coding:utf-8 -8-
"""
Author: Leung
Date: 2021--08--01
"""

import numpy as np
import matplotlib.pyplot as plt

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

w = 1  # 初始化
a = 0.01  # 学习速率


def forward(x):
    return w * x

def loss(xs, ys):
    y_pred = forward(xs)
    return (y_pred - ys) * (y_pred - ys)

def grad(xs, ys):
    y_pred = forward(xs)
    return 2 * xs * (y_pred - ys)

loss_vector =[]

for loop in range(100):
    for x_val,y_val in zip(x_data,y_data):
        loss_vector.append(loss(x_val,y_val))

        w = w-a*grad(x_val,y_val)


x_vector = np.arange(1,301)
plt.plot(x_vector,loss_vector)
plt.show()


运行结果

2


写在最后

本文章为《PyTorch深度学习实践》完结合集课程对应的一些课后习题解答,仅为各位同志学习参考之用

各位看官,都看到这里了,麻烦动动手指头给博主来个点赞8,您的支持作者最大的创作动力哟! <(^-^)>
才疏学浅,若有纰漏,恳请斧正
本文章仅用于各位同志作为学习交流之用,不作任何商业用途,若涉及版权问题请速与作者联系,望悉知

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-08-02 10:49:09  更:2021-08-02 10:49:34 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年12日历 -2024/12/22 10:48:26-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码