PyTorch深度学习框架(一)

2023-11-19

pytorch安装步骤

pip3 install torch torchvision torchaudio

pytorch基本使用方法

#创建一个矩阵
x=torch.empty(5,3)
print(x)
#来个随机数
y=torch.rand(5,3)
print(y)
#初始化全零矩阵
n=torch.zeros(5,3,dtype=torch.long)
print(n)
#矩阵的加法
w=torch.rand(5,3)
print(w+y)

view操作(改变矩阵维度)

#View操作
x=torch.randn(4,4)
y=x.view(16)
#-1 使用自动计算 ,第二个维度为8,第一个维度自动计算
z=x.view(-1,8)
print(x.size(),y.size(),z.size())

格式转化(numpy<----->torch)

#将torch格式转化为numpy格式
a=torch.ones(5)
b=a.numpy()
print(b)
#将numpy转为torch
a=np.ones(5)
b=torch.from_numpy(a)
print(b)

自动求导机制

#方法一
x=torch.randn(3,4,requires_grad=True)

#方法二
x=torch.randn(3,4)
x.requires_grad=True
print(x)

例子实现

在这里插入图片描述


x=torch.rand(1)
b=torch.rand(1,requires_grad=True)
w=torch.rand(1,requires_grad=True)
y=w*x
z=y+b
#反向传播
z.backward(retain_graph=True)
print(b.grad)

在这里插入图片描述

线性回归模型

机器学习最常见的场景是监督学习:给定一些数据,使用计算学习到一种模型,然后使用它来预测新的数据。一个简单的监督学习任务可以表示为,给定N个两两数据对(Xi,Yi),使用某种机器学习模型对其进行建模,得到一个模型,其中某个给定的数据对为样本,X为特征,Y为真实值。

#coding=utf-8
from cProfile import label
from pickletools import optimize
from turtle import forward
import torch
import cv2
import torch
import torch.nn as nn
import numpy as np
import matplotlib.pyplot as plt

####构造数据集
#首先构造数据集,数据集的行表示预测值的数量,而列表示参数的自变量
x_value=[i for i in range(11)]
x_train=np.array(x_value,dtype=np.float32)
# 参数-1,表示模糊reshape的意思。
# 比如:reshape(-1,3),固定3列 多少行不知道。
x_train=x_train.reshape(-1,1)

y_value=[2*i+1 for i in x_value]
y_train=np.array(y_value,dtype=np.float32)
y_train=y_train.reshape(-1,1)


#建立线性回归模型
class LinearModel(nn.Module):
    #input_dim 输入数据的维度  optput_dim 输出数据的维度
    def __init__(self,input_dim,output_dim):
        super(LinearModel,self).__init__()
        self.linear=nn.Linear(input_dim,output_dim)
    def forward(self,x):#前向传播函数,将当前的x值传进去输出y值
        out=self.linear(x)
        return out

#创建模型
model=LinearModel(1,1)

#创建损失函数
Loss=nn.MSELoss()
#创建优化函数0.01为学习率
optimizer=torch.optim.SGD(model.parameters(),lr=0.01)
#设置训练次数
number=1000

plt.ion()
#训练模型
for i in range(number):
    i+=1
    #转换数据类型
    inputs=torch.from_numpy(x_train)
    #标签
    labels=torch.from_numpy(y_train)

    #梯度要清零每一次迭代
    optimizer.zero_grad()

    #前向传播来计算每次的输出值,将用训练好的模型来将X值输入,预测Y值
    outputs=model(inputs)

    #计算误差,使用损失函数
    loss=Loss(outputs,labels)

    #根据损失函数返回的值来反向传播计算出k和b的值   y=kx+b

    loss.backward()

    #使用优化函数来更新权重参数
    optimizer.step()

    #使用坐标显示来显示预测的结果

    if i%100==0:
        plt.cla()
        plt.scatter(inputs.data.numpy(),labels.data.numpy())
        plt.plot(inputs.data.numpy(), outputs.data.numpy(), 'r--', lw=5)
        [w,b]=model.parameters()
        plt.xlim(0,11)
        plt.ylim(0,25)
        plt.text(0,5,'loss=%.4f,k=%.2f,b=%.2f'%(loss.item(),w.item(),b.item()))
        plt.pause(1)
plt.ioff()
plt.show()

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

常见的tensor格式

  • 0:scalar
  • 1:vector
  • 2:matrix
  • 3:n-dimensional tensor
#scalar通常是一个数值
x=tensor(42.)
w=2*x
print(w)
print(x)
print(x.item())

#vector 例如:【-5,2,0】在深度学习中通常指特征,例如词向量,某一维度特征等
v = tensor([1.4, -0.5, 3.0])
#输出维度
print(v.dim())
#输出大小
print(v.size())

#Matrix一般计算的都是矩阵,通常是多维的
M=tensor([[1,2],[3,4]])
print(M)
print(M.matmul(M))
print(tensor([1,0]).matmul(M))

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

PyTorch深度学习框架(一) 的相关文章

  • Python包不安装子模块

    我在 dev 分支中创建了一个具有以下结构的包 在验证包安装正确之前不会合并到 main mypackage init py setup py requirements txt module py subpackage one init p
  • Pyenv 无法在 Cygwin 上安装 python: ModuleNotFoundError: No module named '_ctypes'

    我正在尝试设置 Cygwin 环境以使用 pyenv 来管理 python 版本 我没有管理员权限 所以我使用以下命令运行设置 no admin flag 我使用 Cygwin 包管理器应用程序解决了一些依赖关系 但我被困在了这一点上 Mo
  • 创建圆形图像 PIL Tkinter

    Currently I have a zoom feature in my application that works very well however I d like the actual zoom box to be a circ
  • 可移植的非关系数据库

    我想尝试 尝试非关系数据库 最好的解决方案是 便携式 这意味着它不需要安装 理想情况下 只需将目录复制粘贴到某个地方即可使其工作 我不介意第一次使用时是否需要编辑一些配置文件或运行配置工具 可从 python 访问 适用于 Windows
  • 使用 Python 的文本中的词频但忽略停用词

    这给了我文本中单词的频率 fullWords re findall r w allText d defaultdict int for word in fullWords d word 1 finalFreq sorted d iterit
  • 在ansible中合并字典

    我目前正在构建一个使用 ansible 安装 PHP 的角色 并且在合并字典时遇到一些困难 我尝试了多种方法来做到这一点 但我无法让它像我想要的那样工作 A vars file my default values key value my
  • 如何使用python读取最后一行的特定位置

    我有一个太大的 txt 文件 并且有几行类似的行 如下所示 字1 字2 字3 字4 553 75 我对位置 4 值 感兴趣 即最后一行 553 75 我的文件文本 word1 word2 word3 word4 553 20 word1 w
  • 在 MATLAB 中创建共享库

    一位研究人员在 MATLAB 中创建了一个小型仿真 我们希望其他人也能使用它 我的计划是进行模拟 清理一些东西并将其变成一组函数 然后我打算将其编译成C库并使用SWIG https en wikipedia org wiki SWIG创建一
  • 提交表格并上传带有请求的文件

    我正在努力提交特定的表格蟒蛇请求 http www python requests org 我想使用它的网站上的其他表单工作正常 我可以提交登录表单等 这只是我遇到问题的文件上传 显然 提交表单效果很好 因为我从网站收到一条消息 说 请返回
  • 为 Python 2.4 改进“with”语句的直接替换

    您能否建议一种方法来编写可在 Python 2 4 中使用的 with 语句的直接替换代码 这将是一个 hack 但它可以让我更好地将我的项目移植到 Python 2 4 EDIT 删除了不相关的元类草图 只需使用 try finally
  • x11 - 导入错误:没有名为“kivy.core.window.window_x11”的模块

    目前我正在尝试构建一个我通过 buildozer 用 Python 和 Kivy 编写的应用程序 无论我在做什么 我都会遇到 window x11 的问题 即使我在代码中注释掉所有与 Windows 相关的内容或执行本文中描述的所有操作 这
  • 如何在 Python 中执行相当于预处理器指令的操作?

    有没有办法在 Python 中执行以下预处理器指令 if DEBUG lt do some code gt else lt do some other code gt endif There s debug 这是编译器预处理的特殊值 if
  • 如何将 pytest 装置与 django TestCase 一起使用

    我如何在TestCase方法 类似问题的几个答案似乎暗示我的例子应该有效 import pytest from django test import TestCase from myapp models import Category py
  • 网页抓取 - 如何识别网页上的主要内容

    给定一个新闻文章网页 来自任何主要新闻来源 例如时报或彭博社 我想识别该页面上的主要文章内容 并丢弃其他杂项元素 例如广告 菜单 侧边栏 用户评论 在大多数主要新闻网站上都可以使用的通用方法是什么 有哪些好的数据挖掘工具或库 最好是基于Py
  • 从 C 线程调用 Python 代码

    我对从 C 或 C 线程调用 Python 代码时如何确保线程安全感到非常困惑 The Python 文档 http docs python org c api init html non python created threads似乎是
  • 在 scrapy 中将基本 url 与结果 href 结合起来

    下面是我的蜘蛛代码 class Blurb2Spider BaseSpider name blurb2 allowed domains www domain com def start requests self yield self ma
  • Jinja2中获取请求参数

    如何检索请求参数a在 Jinja2 模板中 http foo bar a 1 我这个答案有点晚了 但其他解决方案并没有真正考虑到您对 Flask 的使用 事实上 您将 Flask 与 Jinja2 一起使用 这使得您的情况与其他框架有点不同
  • 在Python中从列表中获取n个项目组的惯用方法? [复制]

    这个问题在这里已经有答案了 给定一个列表 A 1 2 3 4 5 6 是否有任何惯用的 Pythonic 方式来迭代它 就好像它是 B 1 2 3 4 5 6 除了索引之外 这感觉像是 C 的遗留物 for a1 a2 in A i A i
  • 在读/写二进制数据结构时访问位域

    我正在为二进制格式编写一个解析器 这种二进制格式涉及不同的表 这些表同样采用二进制格式 通常包含不同的字段大小 其中 50 100 个之间 大多数这些结构都有位域 并且在 C 语言中表示时看起来像这样 struct myHeader uns
  • python中匹配3个或更多相同的字符

    我正在尝试使用正则表达式在字符串中查找三个或更多相同的字符 例如 你好 不匹配 噢 会的 我尝试过做类似的事情 re compile 1 3 a zA Z re compile w 1 5 但似乎都不起作用 w 1 2 是您正在寻找的正则表

随机推荐

  • hive、impala、prestoDB 优缺点对比

    hive 优点 缺点 被广泛应用 经受时间的考验 既然是基于Mapreduce 也拥有MapReduce所有缺点 包含昂贵的Shuffle操作和磁盘IO操作 运行在Mapreduce框架之上 hive仍然不支持多个reduce操作group
  • JavaScript系列——数组元素左右移动N位算法实现

    引言 在自己刚刚毕业不久的时候 去了一家公司面试 面试官现场考了我这道题 我记忆深刻 当时没有想到思路 毫无疑问被面试官当成菜鸟了 最近刚好在研究数组的各种算法实现 就想到这道题 可以拿来实现一下 纪念自己逝去的青春 需求 假设有这样一个数
  • stm32(十)滴答定时器

    1 系统滴答定时器的概述 滴答定时器又称 SysTick 有两个时钟源 一个为内部时钟 一个为外部时钟 滴答定时器是一个 24 位倒计 数的定时器 从预装载值一直到 0 重装载寄存器的值会自动装载到计数寄存器中 只要不把它使能位清除 那 么
  • 用过多款团队协作工具后,少数派为什么选择飞书

    飞书 字节跳动旗下SaaS应用 自诞生以来 受到了国内众多企业的青睐和关注 飞书也一直致力于为企业提供高效协作的解决方案 如今 飞书的解决方案已覆盖互联网 教育 媒体 法律 零售等行业 未来还将进一步扩展到更多行业 少数派 是媒体行业中最早
  • Java程序员必备的几款开发工具

    工欲善其事 必先利其器 作为一名优秀的Java程序员 怎能没有几款得心应手的高效开发工具呢 市面上类库 工具千千万 下面就给大家推荐几款高效的Java开发工具 1 UItraEdit UltraEdit是初学者们非常喜爱的一款开发工具 可以
  • 史上最全的MathCAD安装教程

    今天我们来安装一下MathCAD 今天我们安装的版本是PTC MathCAD Prime 5 0 Step 01 首先我们先来下载一下软件 提取码 nifp Step 02 软件下载好了之后如下图 Step 03 解压此文件 Step 04
  • vue的v-for循环普通数组、对象数组、对象、数字

    div span u 索引 i span br span u a 索引 i span div
  • JavaScript经典案例之按下拖拽、跟随鼠标移动

    div div
  • VMware虚拟机走主机代理上网

    1 打开虚拟机系统的网络设置 2 设置代理为手动 并填写代理ip和端口 这里我的代理软件用的是Socket协议 故只填 Socket 主机一栏 3 代理 ip 和端口填写 ip地址 ip地址可以在主机系统的命令行窗口输入ipconfig查询
  • js向服务器发送信息,Angularjs向服务器发送请求

    您需要将id属性分配给对象 item id 4 让我们假设您有一个文本框 并且用户想要通过在其中插入名称来保存新项目 然后单击提交 让我们假设您正在使用MongoDB项目集合 为简单起见 它们只有id字段 这是你应该做些什么来让它变得容易
  • java如何检测连接池连接情况,如何监控数据库连接池(JDBC Connection Pool)

    本文中 我将介绍利用Dynatrace AppMon监控JDBC Connection Pool的一些技巧 以便快速诊断JDBC Connection Pool是否存在泄露和监控JDBC Connection Pool的使用率 通过监控获取
  • 攻防世界 Web simple_php

    攻防世界 Web simple php 1 分析源代码 2 得到flag 1 分析源代码 a 和 b 都是通过GOT传入 第一个if可以获取flag1 但是要求a0 atrue 但是如果
  • x-studio教程之 - Unity Lua调试 ulua/tolua slua调试教程

    UnityLua DebugTutorial 请查看最新官方文档 https docs x studio net zh CN latest lua dbg 01 unity3d
  • Grafana安装和实现可视化和告警

    1 Grafana安装和实现可视化和告警 Prometheus UI 提供了快速验证 PromQL 以及临时可视化支持的能力 但其可视化能力却比较弱 一般情况下 我们都用 Grafana 来实现对 Prometheus 的可视化实现 1 1
  • 软件测试工程师自我介绍范文_软件测试面试指导之自我介绍

    面试自我介绍虽然人人都准备 但是做到让人印象深刻可不容易啊 本篇就具体来聊聊人人都要经历的面试 怎么做自我介绍 才能让面试官眼前一亮 面试是什么 它是个机会 让面试官更进一步确认你是他们需要的人 你进一步展现你的交际沟通能力 在面试中 自我
  • 7G空间安装Linux,双系统使用Linux引导

    今天在装linux的window双系统时 出现在无法使用linux引导的问题 开机总是自动进windows 照理来说我先装的window 后装的linux 应该是开机进grub引导才对 在主板的boot里根本没有linux项 后来用Easy
  • DAMA-DMBOK2重点知识整理CDGA/CDGP——第2章 数据处理伦理

    目录 一 分值分布 二 重点知识梳理 1 语境关系图 2 引言 3 业务驱动因素 4 基本概念 一 分值分布 CDGA 2分 2单选 CDGP 0分 不考 二 重点知识梳理 1 引言 预警关系图 数据处理伦理定义 如何以符合道德准则及社会责
  • module load/unload 命令 (Envrionment modules工具)

    Envrionment modules工具用来快速的设置和修改用户编译运行环境 Envrionment modules通过加载和卸载modulefile文件可直接改变用户的环境变量 用户不需要修改 bashrc 从而避免误操作 使用modu
  • Unity里清除Console控制台Log的函数

    Log输出部分转发来自 http blog sina com cn s blog 13c4bf4b40102wz0r html 在控制台输出中 是开发者常用到的一种函数 通过Debug类来实现 打印字符串 Debug Log log 如果有
  • PyTorch深度学习框架(一)

    文章目录 pytorch安装步骤 pytorch基本使用方法 view操作 改变矩阵维度 格式转化 numpy lt gt torch 自动求导机制 例子实现 线性回归模型 常见的tensor格式 pytorch安装步骤 pip3 inst