【paddle】初次尝试

news/2025/1/8 4:28:21/

张量

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

paddleTensor__numpyarray__3">张量 paddle.Tensor 与 numpy.array 的转化

python">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]|

python">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
python">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 张量形状

python">import paddlex = 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)

python">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 输出为 Noney = 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]])
python">

http://www.ppmy.cn/news/1561170.html

相关文章

什么是Kafka的重平衡机制?

Kafka 的重平衛机制是指在消费者组中新增或删除消费者时,Kafka 集群会重新分配主题分区给各个消费者,以保证每个消费者消费的分区数量尽可能均衡。 重平衡机制的目的是实现消费者的负载均衡和高可用性,以确保每个消费者都能够按照预期的方式…

基于数据融合的智能家居环境监测系统研究与设计(论文+源码)

1总体方案设计 本次基于数据融合的智能家居环境监测系统的设计,其系统总体架构如图2.1所示,整个系统在器件上包括了主控制器STM32F103单片机,MQ可燃气体传感器,光照传感器,DHT11温湿度传感器,风扇&#xff…

unity 播放 序列帧图片 动画

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、方法一:代码控制播放序列帧1、设置图片属性2、创建Image组件3、简单的代码控制4、挂载代码并赋值 二、方法二:直接使用1.Image上添加…

Codigger集成Copilot:智能编程助手

在信息技术的快速发展中,编程效率和创新能力的提升成为了开发者们追求的目标。Codigger平台通过集成Copilot智能编程助手,为开发者提供了一个强大的工具,以增强其生产力、创新力和技能水平。本文将深入探讨Codigger与Copilot的集成如何为IT专…

Scala语言的数据库交互

Scala语言的数据库交互 引言 Scala是一种多范式编程语言,融合了面向对象和函数式编程的特性,因其简洁的语法和强大的功能而受到广泛欢迎。在现代软件开发中,数据库交互是一个不可或缺的环节。对于Scala开发者来说,了解如何与数据…

基于单片机的篮球计分器设计

一、设计内容 基于单片机的篮球计分器设计 设计内容: 1、设计 LCD 显示篮球比分牌 ,通过加分按钮可以给 A 队或 B 队加分; 2、设计对调功能, A 队和 B 队分数互换,意味着中场交换场地; 3、显示比赛倒计时…

spring mvc源码学习笔记之二

pom.xml 内容如下 <?xml version"1.0" encoding"UTF-8"?> <project xmlns"http://maven.apache.org/POM/4.0.0"xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/P…

如何备份和恢复 PostgreSQL 数据库 ?

对于数据库管理员和开发人员来说&#xff0c;在 PostgreSQL 中创建数据库副本是一项至关重要的任务。此过程对于测试、备份、数据分析等都是必不可少的。在本指南中&#xff0c;我们将深入研究创建 PostgreSQL 数据库副本的步骤&#xff0c;以确保数据完整性和系统性能。 必要…