机器学习 深度学习编程笔记

news2024/11/27 8:28:41

sigmoid函数

def sigmoid(x):
    return 1.0 / (1+np.exp((-x)))

定义最小平方和损失函数

loss = torch.nn.MSELoss()

线性回归编程

在这里插入图片描述
如果不加噪音就成了正常的线性函数了,所以要加噪音。

torch.normal(0, 0.01, y.shape)

torch.normal(0, 0.01, y.shape)是一个用于生成服从正态分布的张量的函数。其中,0代表均值,0.01代表标准差,y.shape表示生成的张量的形状与y相同。具体而言,该函数会生成一个张量,其元素值是从均值为0、标准差为0.01的正态分布中随机采样得到的。

y.reshape((-1, 1))

y.reshape((-1, 1))是将张量y进行形状重塑的操作。通过该操作,可以将y转换为一个列向量,其中每个元素保持不变。

在PyTorch中,使用reshape函数对张量进行形状调整。参数(-1, 1)表示将y重塑为一个列向量,其中-1表示自动计算此维度的大小,而1表示列的维度大小为1。

y.reshape((-1, 1))将返回一个形状调整后的新张量,而原始的y张量保持不变。

手动实现线性回归

import random

import torch
from d2l import torch as d2l

def synthetic_data(w,b,num_examples):
    #  生成大小为(0,1),num_examples行,len(w)列的数据x , 此处是(1000,2)
    X = torch.normal(0,1,(num_examples,len(w)))
    # y = X*w + b
    y = torch.matmul(X,w) + b
    # y 加上噪音
    y += torch.normal(0,0.01,y.shape)
    return X,y.reshape((-1,1))

'''随机(小批量)梯度下降'''
def data_iter(batch_size,features,labels):
    num_examples = features.shape[0]
    '''生成0-999'''
    indices = list(range(num_examples))
    '''打乱0-999'''
    random.shuffle(indices)
    '''0-999中每次取一个batch_size'''
    for i in range(0,num_examples,batch_size):
        '''设置一个batch的索引'''
        batch_indices = torch.tensor(indices[i:min(i+batch_size,num_examples)])
        yield features[batch_indices],labels[batch_indices]


def plot_img(features,labels):
    # 创建一个画板
    d2l.set_figsize()
    # 画一个散点图 (numpy格式的x,y,散点的像素大小)
    d2l.plt.scatter(features[:, 1].detach().numpy(), labels.detach().numpy(), 1)
    # 展示图像
    d2l.plt.show()

true_w = torch.tensor([2,-3.4])
true_b = 4.2
features,labels = synthetic_data(true_w,true_b,1000)

# 画图显示特征和标签
# plot_img(features,labels)

batch_size = 10
for X,y in data_iter(batch_size,features,labels):
    print(X,'\n',y)
    break

# 初始化模型参数, w是个列,形状为两行1列,值符合0,0.01的分布
w = torch.normal(0,0.01,size=(2,1),requires_grad=True)
b = torch.zeros(1,requires_grad=True)

# 定义线性函数
def linreg(X,w,b):
    return torch.matmul(X,w)+b

# 定义损失函数
def squared_loss(y_hat,y):
    return (y_hat - y.reshape(y_hat.shape)) ** 2 /2

# 定义优化函数
def sgd(params,lr,batch_size):
    '''小批量随机梯度下降'''
    with torch.no_grad():
        for param in params:
            '''参数 = 参数 - 1/batch_size * -学习率 * 梯度'''
            param -= lr * param.grad / batch_size
            '''一个参数一个梯度,该下一个参数了比如是w2,所以要梯度清零'''
            param.grad.zero_()


# 开始训练,定义参数和网络
lr = 0.03
num_epochs = 10
net = linreg
loss = squared_loss

for epoch in range(num_epochs):
    for X,y in data_iter(batch_size,features,labels):
        y_hat = net(X,w,b)
        L = loss(y_hat,y)
        # 计算的是每个样本的损失,所以要求和
        L.sum().backward()
        # 更新参数
        sgd([w,b],lr,batch_size)
    with torch.no_grad():
        # w,b已经经过上面的更新函数更新过了,用更新后的w,b代入公式 计算损失
        train_L = loss(net(features,w,b),labels)
        print(f'epoch {epoch+1}, loss {float(train_L.mean()):f}')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/781858.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vue 复杂json数据在el-table表格中展示(el-table分割数据)

文章目录 前言问题背景实现复杂json数据在el-table表格展示el-table-column分割线el-table-column高度 前言 在做复杂的动态表单,实现业务动态变动,比如有一条需要动态添加的el-form-item中包含了多个输入框,并实现表单验证,但在…

智慧税务大厅业务办理vr模拟体验提升缴税效率和质量

目前的税务部门的办事大厅,承载着纳税人的各种税务事项的办理,业务量较大,特别是窗口工作人员,在税务办理的高峰期,经常会遇到人手不够的情况,如果能够将vr技术应用的税务办理的环节中,让使用者…

FPGA FIFO——IP核

文章目录 前言一、FIFO1、区别2、分类 二、单时钟&多时钟FIFO框图三、FIFO IP 核配置四、源码1、fifo_wr(写模块)2、fifo_rd(读模块)3、ip_fifo(顶层文件) 五、仿真1、仿真文件2、波形分析 六、SignalTap II在线验证七、总结八、参考资料 前言 环境: 1、Quartus…

python与深度学习(六):CNN和手写数字识别二

目录 1. 说明2. 手写数字识别的CNN模型测试2.1 导入相关库2.2 加载数据和模型2.3 设置保存图片的路径2.4 加载图片2.5 图片预处理2.6 对图片进行预测2.7 显示图片 3. 完整代码和显示结果4. 多张图片进行测试的完整代码以及结果 1. 说明 本篇文章是对上篇文章训练的模型进行测试…

5.5.tensorRT基础(2)-封装插件过程,并实现更容易的插件开发

目录 前言1. 插件封装2. 补充知识总结 前言 杜老师推出的 tensorRT从零起步高性能部署 课程,之前有看过一遍,但是没有做笔记,很多东西也忘了。这次重新撸一遍,顺便记记笔记。 本次课程学习 tensorRT 基础-封装插件过程&#xff0c…

5G的发展过程

目录 1.什么是5G 2.5G与4G的区别 3.5G的应用领域 4.5G给人类带来的福利 5.5G未来的发展趋势 1.什么是5G 5G技术是第五代移动通信技术,它是对之前的2G、3G和4G技术的升级和革新。5G技术具有更高的数据传输速度、更低的延迟和更大的网络容量,为人们提供…

Qt简单实现密码器控件

本文实例为大家分享了Qt自定义一个密码器控件的简单实现代码,供大家参考,具体内容如下 实现构思: 密码器的功能可以看成是计算器和登陆界面的组合,所以在实现功能的过程中借鉴了大神的计算器的实现代码和登陆界面实现的代码。 …

20230720在ubuntu22.04系统下载+解密+合并ts切片的步骤(STEP-BY-STEP版本)

20230720在ubuntu22.04系统下载解密合并ts切片的步骤(STEP-BY-STEP版本) 2023/7/20 23:06 https://app1ce7glfm1187.h5.xiaoeknow.com/v2/course/alive/l_64af6130e4b03e4b54da1681?type2&app_idapp1cE7gLFM1187&pro_idterm_645c69388953e_Nhew…

人类机器人编程的心理机制(一)

\qquad 本文中的人类机器人编程(Human Robot Programming)意指“基于创伤的脑控(trauma-based mind control, T.B.M.C)”或“基于创伤的编程(trauma-based programming)”,文中用英文缩写“T.B.M.C”指代。T.B.M.C的操纵主体是施加编程的个人或机构,文中…

个人博客系统(三)

在个人博客系统(二)中介绍了注册页面和登录页面,这两个页面比较简单,最重要的一个问题是验证码的实现,具体详情可见:http://t.csdn.cn/EyVjz​​​​​​ 接下来,本博客主要介绍的是添加博客页面和修改博客页面。 1 添加博客页面 该页面如图所示: 首先判断文章标题是…

AcWing算法提高课笔记

目录 Level2 1.动态规划——从集合角度考虑DP问题 1.1 数字三角形模型 1.1.1摘花生 1.1.2最低通行费 1.1.3方格取数 1.1.4传纸条 1.2 最长上升子序列模型 1.2.1怪盗基德的滑翔翼 1.2.2登山 1.2.3合唱队形 1.2.4好友城市 1.2.5最大上升子序列和 1.2.6拦截导弹 1.2…

MySQL下载与安装

MySQL下载与安装 一、下载 地址:https://dev.mysql.com/downloads/mysql/ 当前最新是8.0版本,我选择上一个最新的mysql-5.7.24-winx64.zip 二、安装 MySQL安装文件分两种 .msi和.zip ,.msi需要安装 zip格式是自己解压,解压缩之后…

Openlayers实战:extent介绍及实际应用

Openlayers中,extent是重要的属性,它主要目的是圈定边界。setExtent方法可以设定边界的值;fit()方法可以适配狂口的位置。 效果图 源代码 /* * @Author: 大剑师兰特(xiaozhuanlan),还是大剑师兰特(CSDN) * @此源代码版权归大剑师兰特所有,可供学习或商业项目中借鉴,…

关于Idea/DataGrip下载的插件在那个文件夹

不止Idea和DataGrip,只要是JET BRAINS家的产品都实用。 路径:C:\Users\windows登录账户\AppData\Roaming\JetBrains\DataGrip2021.3\plugins 如果要找其他软件的插件,就在JetBrains目录下找到相对应的软件,点进去后就是插件。 针…

瑞吉外卖开发笔记 七(Linux)

为什么要学Linux ? 企业用人要求个人发展要求 学习后能干什么? Linux简介 不同应用领域的主流操作系统 桌面操作系统 Windows (用户数量最多)Mac OS(操作体验好,办公人士首选)Linux(用户数量少) 服务器操作系统 UN…

Python Flask构建微信小程序订餐系统 (十一)

🔥 已经删除的会员不允许进行编辑昵称 🔥 🔥 已经删除的会员要隐藏掉会员信息的编辑按钮 🔥 🔥 创建商品表 food 🔥 CREATE TABLE `food` (`id` int(11) unsigned NOT NULL AUTO_INCREMENT,`cat_id` int(11) NOT NULL DEFAULT 0 COMMENT 分类id,`name` varchar…

springboot集成logback按日志级别按天保存

演示结果 集成logback后项目启动控制台不会有日志输出 生成的日志文件路径windows上是默认D盘,linux上可自定义 代码实现 pom.xml <dependency><groupId>ch.qos.logback</groupId>

[DASCTF 2023 0X401七月暑期挑战赛] crypto

密码只有3道题&#xff0c;最后一道被卡了&#xff0c;赛后在师傅一点点提示下完成。 ezRSA 题目很短&#xff0c;分两个RSA一个用小写表示一个用大写表示&#xff0c;小写n用大写加密&#xff0c;大写的给出了P和Q>>16的提示。 from Crypto.Util.number import * from…

EMC学习笔记(十九)EMC常用元件简单介绍

EMC常用元件简单介绍 1.共模电感2.磁珠3.滤波电容器 1.共模电感 由于 EMC 所面临解决问题大多是共模干扰&#xff0c;因此共模电感也是我们常用的有力元件之一&#xff01;这里就给大家简单介绍一下共模电感的原理以及使用情况。 共模电感是一个以铁氧体为磁芯的共模干扰抑制…

C语言每日一题:3.错误的集合

题目链接&#xff1a;点击 思路一 1.1.排序遍历拿到我们重复的数值的同时去遍历数组一遍,求和重复的数字只加入一遍,和设置为sum1&#xff1b; 2.求没有消失的和&#xff0c;等差数列求和公式(1n)*n/2&#xff0c;定义为sum2&#xff1b; 3.sum2-sum1就是消失的数值。 这个方法…