• 动手学深度学习(pytorch)2


    概率

    先抽样

    import torch
    from torch.distributions import multinomial
    from d2l import torch as d2l
    fair_probs = torch.ones([6]) / 6
    t=multinomial.Multinomial(10, fair_probs).sample()
    print(t)
    
    输出为tensor([1., 2., 1., 3., 1., 2.])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    搜了一下torch的库,有torch.multinomial和torch.distributions中的multinomial。我粗浅的理解是前者需要我们输入一个向量(带权重),然后返回的是多个不同i(对应每次对向量中第i个元素进行索引),出现次数多概率大。后者输出是另⼀个相同⻓度的向量:它在索引i处的值是采样结果中i出现的次数
    下面是torch.multinomial。

    >>>weights = torch.tensor([0, 10, 3, 0], dtype=torch.float) # create a tensor of weights
    >>> torch.multinomial(weights, 2)
    tensor([1, 2])
    
    • 1
    • 2
    • 3

    整套过程
    用到cumsum(注意维数从外到内是0-2编号)
    https://blog.csdn.net/banana1006034246/article/details/78841461

    
    import torch
    from torch.distributions import multinomial
    from d2l import torch as d2l
    fair_probs = torch.ones([6]) / 6
    counts = multinomial.Multinomial(10, fair_probs).sample((500,))
    cum_counts = counts.cumsum(dim=0)
    estimates = cum_counts / cum_counts.sum(dim=1, keepdims=True)
    d2l.set_figsize((6, 4.5))
    for i in range(6):
        d2l.plt.plot(estimates[:, i].numpy(),
    label=("P(die=" + str(i + 1) + ")"))
    d2l.plt.axhline(y=0.167, color='black', linestyle='dashed')
    d2l.plt.gca().set_xlabel('Groups of experiments')
    d2l.plt.gca().set_ylabel('Estimated probability')
    d2l.plt.legend();
    d2l.plt.show()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    源码给的是%matplotlib inline
    在pycharm上报错,就删了,在最后加上d2l.plt.show()
    在这里插入图片描述

    库函数查阅

    模块提供了各种⽣成随机数的⽅法,包括从均匀分布(uniform)、正态分布(normal)和多项分布(multinomial)中采样。

    怎样看呢?用dir

    import torch
    print(dir(torch.distributions))
    
    • 1
    • 2

    查询特定函数或类,用help

    help(torch.ones)
    
    
    • 1
    • 2

    线性神经网络

    神经⽹络的整个训练过程,包括:
    定义简单的神经⽹络架构、
    数据处理、
    指定损失函数和如何训练模型

    线性回归和softmax回归可以视为线性神经⽹络

    线性回归

    1 预测的⽬标(⽐如预测房屋价格)称为标签(label)或⽬
    标(target)。

    2 预测所依据的⾃变量(⾯积和房龄)称为特征(feature)或协变量(covariate)

    3 权重和偏置,我一般粗略理解为y=ax+b的a和b
    矩阵X每⼀⾏是⼀个样本,每⼀列是⼀种特征
    y= Xw + b

    4 损失函数(loss function):量化⽬标的实际值与预测值之间的差距。
    【平方误差l(i)(w, b) = 1/2*( y ˆ yˆ yˆ(i) − y(i)) 2 ^2 2
    最小总损失对应的w,b: argmin L(w, b).
    (大多数情况下并不能得到w,b的解析解,所以我把导数粗略看成y真实与y估计之差,用它对w,b进行修正)

    5 每次需要计算更新的时候随机抽取⼀⼩批样本,这种变体叫做⼩批量随机梯度下降(minibatchstochastic gradient descent)

    6 泛化:找到⼀组参数,这组参数能够在我们从未⻅过的数据上实现较低的
    损失,这⼀挑战被称为泛化(generalization)

    书上涉及具体的定义与概念,就不做详细笔记了。以上是各名词的简要解释(从pdf107页开始。)

  • 相关阅读:
    redis
    powershell和cmd对比
    Python Q-learning 算法 --2023博客之星候选--城市赛道
    编程基础---C/C++基础知识
    中文drupal教程1. 自动加载器与Composer
    《算法通关村—迭代实现二叉树的前序遍历》
    高德地图API-通过经纬度获取当前位置附近的建筑
    Xilinx microblaze axi can 使用说明
    使用springboot框架读取和导入excel表格
    (selenium element not interactable)selenium的send_keys怎么往codemirror中发送数据
  • 原文地址:https://blog.csdn.net/m0_64016875/article/details/127483286