【paddle】初次尝试

张量

张量是 paddlepaddle, torch, tensorflow 等 python 主流机器学习包中唯一通货变量,因此应当了解其基本的功能。

张量 paddle.Tensor 与 numpy.array 的转化

import paddle as paddle
import matplotlib.pyplot as plt 
a=paddle.to_tensor(list(paddle.arange(-3.14,3.15,0.01))) # 生成张量a包含从-3.14到3.14间隔0.01的一维张量
b=paddle.sin(a) 
x=paddle.Tensor.numpy(a)  # 将张量a转化为numpy 数组
y=paddle.Tensor.numpy(b)  # 将张量b转化为numpy 数组
plt.plot(x,y)
plt.grid(True)

在这里插入图片描述

张量 Tensor

stop_gradient 查看一个 Tensor 是否计算并传播梯度,如果 stop_gradient 为 True,则该 Tensor 不会计算梯度,并会阻绝 Autograd 的梯度传播。 反之,则会计算梯度并传播梯度。用户自行创建的 Tensor,默认是 True,模型参数的 stop_gradient 都为 False。

place 查看一个 Tensor 的设备位置,Tensor 可能的设备位置有三种:CPU/GPU/固定内存,其中固定内存也称为不可分页内存或锁页内存, 其与 GPU 之间具有更高的读写效率,并且支持异步传输,这对网络整体性能会有进一步提升,但其缺点是分配空间过多时可能会降低主机系统的性能, 因为其减少了用于存储虚拟内存数据的可分页内存。

  1. CPU: place=paddle.CPUPlace() 或 place=Place(cpu)
  2. GPU: place=paddle.CUDAPlace(0) 或 place=Place(gpu:0)

name 名字

persistable 不会被删除的持久性变量

一维张量

shape 维数
| 0 | 1 |…|n-1|
| - | -| -|- |
|a[0] | a[1] |… |a[n-1]|

a=paddle.to_tensor([0,1,2])
print(a)
print(a.shape)
print(a.place)
print(a.stop_gradient)
a.stop_gradient=False
print(a.stop_gradient)
a.name='Var_a'
print(a.name)

Tensor(shape=[3], dtype=int64, place=Place(cpu), stop_gradient=True,
       [0, 1, 2])
[3]
Place(cpu)
True
False
Var_a
b=paddle.to_tensor([[0,1,2],[4,5,6]])
print(b)
print(b.shape)
print(b[0])
print(b[0,0:2])
print(b[:,1])
Tensor(shape=[2, 3], dtype=int64, place=Place(cpu), stop_gradient=True,
       [[0, 1, 2],
        [4, 5, 6]])
[2, 3]
Tensor(shape=[3], dtype=int64, place=Place(cpu), stop_gradient=True,
       [0, 1, 2])
Tensor(shape=[2], dtype=int64, place=Place(cpu), stop_gradient=True,
       [0, 1])
Tensor(shape=[2], dtype=int64, place=Place(cpu), stop_gradient=True,
       [1, 5])

Tensor 其他属性

dtype 数据类型, ‘bool’,‘float16’,‘float32’,‘float64’,‘uint8’,‘int8’,‘int16’,‘int32’,‘int64’

type 类型

is_leaf 梯度链式法则网上的叶子 (stop_gradient=True)

ndim 张量维数

shape 张量形状

import paddle

x = paddle.to_tensor([1, 2, 3])
y = x[1]
print(y.is_contiguous())

True

渐进步长梯度下降法

考虑函数 f ( x ) = x 0 2 + x 1 2 f(x)=x_0^2+x_1^2 f(x)=x02+x12, 梯度为 ∇ f ( x ) = 2 ( x 0 , x 1 ) ⊤ \nabla f(x)=2(x_0,x_1)^\top f(x)=2(x0,x1)

则其梯度下降格式为

x k + 1 = x k − α k ∇ f ( x k ) x_{k+1}=x_k- \alpha_k \nabla f(x_k) xk+1=xkαkf(xk)

import paddle
root = paddle.to_tensor([[1], [2]], dtype='float32', stop_gradient=False)
y = root[0]**2+root[1]**2
paddle.autograd.backward(y,root,True)
print(root.grad)
for i in range(300):
    root= root - root.grad/(i+3)
    root = paddle.to_tensor(root, dtype='float32', stop_gradient=False) # 不得已而为之, 不然报错 因为 root.grad 输出为 None
    y = root[0]**2+root[1]**2   # 更新目标函数值
    paddle.autograd.backward(y,root,True)  # 更新梯度
print(root)
Tensor(shape=[2, 1], dtype=float32, place=Place(cpu), stop_gradient=False,
       [[2.],
        [4.]])
Tensor(shape=[2, 1], dtype=float32, place=Place(cpu), stop_gradient=False,
       [[0.08197821],
        [0.16395642]])

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Frontend - 分页(针对 python / Django )

目录 一、同个文件内(方式一) 1. 前端 html 2. 定义分页界面 3. 获取分页数据 4.后端根据前端分页需求,整理分页数据 5.显示情况 6. JsonResponse 相关知识 二、不同文件内依旧有效(方式二,更优化)…

骑行解压:身心的奇妙之旅,VELO Angel Revo坐垫

在快节奏的都市生活中,骑行不仅是一种健康的生活方式,更是一种心灵的释放。从心理生理学的角度来看,骑行能够促使身体分泌内啡肽,带来愉悦感,同时,它还能转移注意力,缓解焦虑。在这场身心的奇妙…

HarmonyOS NEXT 实战之元服务:静态案例效果---教育培训服务

背景: 前几篇学习了元服务,后面几期就让我们开发简单的元服务吧,里面丰富的内容大家自己加,本期案例 仅供参考 先上本期效果图 ,里面图片自行替换 效果图1完整代码案例如下: import { authentication } …

使用JMeter对Linux生产服务器进行压力测试

安装 JMeter wget https://downloads.apache.org/jmeter/binaries/apache-jmeter-5.4.1.tgz tar -xzf apache-jmeter-5.4.1.tgz cd apache-jmeter-5.4.1创建 JMeter 脚本 设置中文 选择Options—>Choose Language—>选择其他语言(例如:Chinese&am…

【Web安全】文件写入漏洞 ASP 网页病毒模拟(文件写入漏洞+FilesystemObject)

【Web安全】文件写入漏洞 ASP 网页病毒模拟(文件写入漏洞FilesystemObject) 原理 文件写入漏洞 文件写入漏洞是指攻击者通过某种方式在服务器上创建或修改文件的漏洞。攻击者可以利用此漏洞在服务器上写入恶意代码或文件,从而实现进一步的…

微信小程序调用 WebAssembly 烹饪指南

我们都是在夜里崩溃过的俗人,所幸终会天亮。明天就是新的开始,我们会变得与昨天不同。 一、Rust 导出 wasm 参考 wasm-bindgen 官方指南 https://wasm.rust-lang.net.cn/wasm-bindgen/introduction.html wasm-bindgen,这是一个 Rust 库和 CLI…

整合版canal ha搭建--基于1.1.4版本

开启MySql Binlog(1)修改MySql配置文件(2)重启MySql服务,查看配置是否生效(3)配置起效果后,创建canal用户,并赋予权限安装canal-admin(1)解压 canal.admin-1…

药片(药丸)和胶囊识别数据集,使用yolo,pasical voc xml, coco json格式标注,可识别药片和胶囊两种标签,2445张原始图片

药片(药丸)和胶囊识别数据集,使用yolo,pasical voc xml, coco json格式标注,可识别药片和胶囊两种标签,2445张原始图片 数据集分割 训练组80% 1967图片 有效集13% 317图片 测试集7% 161图片 预处…

C 语言:注释的重要性及用法详解

目录 一、注释的作用 二、C 语言中的注释类型 三、注释的实践 四、注释的注意事项 五、总结 在 C 语言编程中,注释是一种非常重要的工具,它可以帮助程序员更好地理解代码、提高代码的可读性和可维护性。本文将详细介绍 C 语言中注释的用法和重要性。…

麒麟信安云在长沙某银行的应用入选“云建设与应用领航计划(2024)”,打造湖湘金融云化升级优质范本

12月26日,2024云计算产业和标准应用大会在北京成功召开。大会汇集政产学研用各方专家学者,共同探讨云计算产业发展方向和未来机遇,展示云计算标准化工作重要成果。 会上,云建设与应用领航计划(2024)建云用…

LeetCode - 初级算法 数组(存在重复元素)

存在重复元素 这篇文章讨论如何判断一个数组中是否存在重复元素。 免责声明:本文来源于个人知识与公开资料,仅用于学术交流。 描述 给定一个整数数组 nums,如果任一值在数组中出现至少两次,返回 true;如果数组中每个元素互不相同,返回 false。 示例: 输入: nums =…

C++笔记之尾后迭代器

C笔记之尾后迭代器 code review! 参考笔记 1.C笔记之尾后迭代器 2.C笔记之迭代器失效问题处理 在C中,尾后迭代器(通常称为 past-the-end iterator)是指指向容器中最后一个元素之后的位置的迭代器。它并不指向任何有效的元素,而是…

Gibbs现象(Gibbs Phenomenon)最初数学上的定义

Gibbs现象(Gibbs Phenomenon)是在处理周期性信号的傅里叶级数展开时出现的一种现象。当一个周期函数在不连续点附近被其傅里叶级数的部分和近似时,近似值会在不连续点处产生过冲(overshoot)和欠冲(undersho…

【时时三省】(C语言基础)动态内存函数realloc

山不在高,有仙则名。水不在深,有龙则灵。 ----CSDN 时时三省 realloc realloc函数的出现让动态内存管理更加灵活。 有时会我们发现过去申请的空间太小了,有时候我们又会觉得申请的空间过大了,那为了合理的时候内存,…

pycharm+anaconda创建项目

pycharmanaconda创建项目 安装: Windows下PythonPyCharm的安装步骤及PyCharm的使用-CSDN博客 详细Anaconda安装配置环境创建教程-CSDN博客 创建项目: 开始尝试新建一个项目吧! 选择好项目建设的文件夹 我的项目命名为:pyth…

ActiveMQ支持哪些传输协议

ActiveMQ 支持多种传输协议,以满足不同场景下的需求。这些协议包括但不限于以下几种: 1. OpenWire: • 这是 ActiveMQ 的默认和专有协议。 • 提供了高效、可靠的消息传递功能。 • 支持多种消息传递模式,如点对点和发布/订阅。 2…

Spring SpEL表达式由浅入深

标题 前言概述功能使用字面值对象属性和方法变量引用#this 和 #root变量获取类的类型调用对象(类)的方法调用类构造器类型转换运算符赋值运算符条件(关系)表达式三元表达式Elvis 操作符逻辑运算instanceof 和 正则表达式的匹配操作符 安全导航操作员数组集合(Array 、List、Map…

STM32裸机开发转FreeRTOS教程

目录 1. 简介2. RTOS设置(1)分配内存(2)查看任务剩余空间(3)使用osDelay 3. 队列的使用(1)创建队列(1)直接传值和指针传值(2)发送/接收…

第9章图9.15-9.21-《分析模式》原图和UML图对比

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集