深度学习数据处理(一)

        在PyTorch中,torch.Tensor是存储和变换数据的主要工具。如果你之前用过NumPy,你会发现Tensor和NumPy的多维数组非常类似。然而,Tensor提供GPU计算和自动求梯度等更多功能,这些使Tensor更加适合深度学习。

        张量(tensor)是数学和物理学中的概念,它表示任意维度的数组或矩阵。在机器学习和人工智能领域,张量是存储和处理数据的基本数据结构。在深度学习中,张量是神经网络中传递和操作数据的基本单位。它可以是标量(0维张量)、向量(1维张量)、矩阵(2维张量)或更高维度的数组。张量不仅可以包含数字数据,还可以包含其他类型的数据,如字符串、图像等。通过张量,我们可以进行各种数学运算和变换,如加法、乘法、卷积等。深度学习框架如TensorFlow和PyTorch提供了丰富的张量操作函数和工具,使得处理和操作张量变得更加方便和高效。

创建Tensor

         在使用深度学习框架(如TensorFlow或PyTorch)时,可以使用相应的函数来创建张量。以下是创建张量的一些常见方法:

 

  1. 使用给定值创建张量:
    import tensorflow as tf# 创建一个标量(0维张量)
    scalar = tf.constant(5)# 创建一个向量(1维张量)
    vector = tf.constant([1, 2, 3])# 创建一个矩阵(2维张量)
    matrix = tf.constant([[1, 2, 3], [4, 5, 6]])# 创建一个3维张量
    tensor = tf.constant([[[1, 2], [3, 4]], [[5, 6], [7, 8]]])
    

  2. 使用随机值创建张量:
    import tensorflow as tf# 创建一个形状为(2, 3)的随机矩阵(2维张量)
    random_matrix = tf.random.normal(shape=(2, 3))# 创建一个形状为(3, 3)的随机矩阵(2维张量),数值范围在0到1之间
    random_uniform = tf.random.uniform(shape=(3, 3), minval=0, maxval=1)
    

Tensor官方API

                    

 操作

  1. 数学运算:

    • tf.add(x, y):逐元素相加。
    • tf.subtract(x, y):逐元素相减。
    • tf.multiply(x, y):逐元素相乘。
    • tf.divide(x, y):逐元素相除。
    • tf.square(x):逐元素求平方。
    • tf.sqrt(x):逐元素求平方根。
    • tf.exp(x):逐元素求指数。
    • tf.log(x):逐元素求自然对数。
  2. 形状操作:

    • tf.reshape(tensor, shape):重新调整张量的形状。
    • tf.transpose(tensor, perm=None):交换张量的维度顺序。
    • tf.expand_dims(input, axis=None):在指定轴上扩展维度。
    • tf.squeeze(input, axis=None):压缩维度为1的轴。
    • tf.concat(tensors, axis):沿指定轴连接张量。
  3. 矩阵操作:

    • tf.matmul(a, b):矩阵相乘。
    • tf.transpose(tensor, perm=None):矩阵转置。
    • tf.linalg.inv(tensor):矩阵求逆。
  4. 逻辑运算:

    • tf.equal(x, y):逐元素比较是否相等。
    • tf.not_equal(x, y):逐元素比较是否不相等。
    • tf.greater(x, y):逐元素比较是否大于。
    • tf.greater_equal(x, y):逐元素比较是否大于等于。
    • tf.less(x, y):逐元素比较是否小于。
    • tf.less_equal(x, y):逐元素比较是否小于等于。
  5. 神经网络相关操作:

    • tf.nn.relu(x):ReLU(整流线性单元)激活函数。
    • tf.nn.softmax(logits):计算 softmax 函数。
    • tf.nn.conv2d(input, filter, strides, padding):二维卷积操作。

  

广播机制

       广播(Broadcasting)是指在 TensorFlow 中,当两个张量在某些维度上的形状不匹配时,自动对其中一个或两个张量进行形状扩展,使它们的形状能够相互兼容,进而进行逐元素的操作。广播机制的目的是为了避免显式地复制数据,从而提高计算效率。以下是广播机制的规则:

  1. 如果两个张量在某个维度上的形状相等,或其中一个张量在该维度上的长度为1,则称它们在该维度上是可广播的。
  2. 当两个张量在某个维度上的形状不匹配时,可以通过对其中一个或两个张量在该维度上进行形状扩展,使它们的形状变得兼容,即满足广播机制的要求。
  3. 在广播过程中,会对形状较小的张量进行扩展,使其形状与形状较大的张量相匹配。扩展的方式是在形状较小的张量的形状前面添加维度长度为1的维度。
import tensorflow as tf# 创建两个张量
a = tf.constant([[1, 2, 3]])
b = tf.constant([[4], [5], [6]])# 形状不匹配,但是可以通过广播进行计算
# a 形状:(1, 3)
# b 形状:(3, 1)
# 广播后的形状:(3, 3)
result = a + bprint(result.numpy())
# 输出:
# [[5 6 7]
#  [6 7 8]
#  [7 8 9]]

 Tensor和NumPy相互转换

使用numpy()Tensor转换成NumPy数组:

a = torch.ones(5)
b = a.numpy()
print(a, b)a += 1
print(a, b)
b += 1
print(a, b)

使用from_numpy()将NumPy数组转换成Tensor:

import numpy as np
a = np.ones(5)
b = torch.from_numpy(a)
print(a, b)a += 1
print(a, b)
b += 1
print(a, b)

此外上面提到还有一个常用的方法就是直接用torch.tensor()将NumPy数组转换成Tensor,需要注意的是该方法总是会进行数据拷贝,返回的Tensor和原来的数据不再共享内存。

# 用torch.tensor()转换时不会共享内存
c = torch.tensor(a)
a += 1
print(a, c)

Tensor on GPU

用方法to()可以将Tensor在CPU和GPU(需要硬件支持)之间相互移动。

# 以下代码只有在PyTorch GPU版本上才会执行
if torch.cuda.is_available():device = torch.device("cuda")          # GPUy = torch.ones_like(x, device=device)  # 直接创建一个在GPU上的Tensorx = x.to(device)                       # 等价于 .to("cuda")z = x + yprint(z)print(z.to("cpu", torch.double))       # to()还可以同时更改数据类型

总结

      TensorFlow 是一个功能强大的机器学习框架,具有广泛的应用和活跃的社区支持。在使用 TensorFlow 进行机器学习和深度学习开发时,需要掌握一些基本概念和技术,例如:

  1. 张量:TensorFlow 中的基本数据类型,它们是多维数组,可以表示各种类型的数据。

  2. 计算图:TensorFlow 的计算模型,它由一系列节点和边组成,每个节点代表一个操作,边代表张量的流动。

  3. 变量:TensorFlow 中的状态,它们是可以被训练的张量,可以存储模型的参数和其他状态信息。

  4. 会话:TensorFlow 执行计算图的环境,它可以将计算图部署到 CPU 或 GPU 上进行计算。

  5. 损失函数:衡量模型预测结果和实际结果之间的差异,从而指导模型的训练。

  6. 优化器:根据损失函数的梯度信息,更新模型参数的算法,例如随机梯度下降。

  7. Dropout、Batch Normalization 等正则化技术:减少模型过拟合的方法。

  8. 卷积神经网络(CNN)、循环神经网络(RNN)等深度学习模型:用于处理图像、语音、自然语言等任务。

  9. 数据预处理技术:包括标准化、归一化、数据增强等方法,用于提高模型的鲁棒性和泛化能力。

  10. 广播机制:在张量形状不匹配时,自动对其中一个或两个张量进行形状扩展,使它们的形状能够相互兼容。

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

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

相关文章

基于ssm+jsp理发店管理系统源码和论文

随着信息化时代的到来,管理系统都趋向于智能化、系统化,理发店管理系统也不例外,但目前国内的市场仍都使用人工管理,市场规模越来越大,同时信息量也越来越庞大,人工管理显然已无法应对时代的变化&#xff0…

【万能技巧】IP知识速通与小技巧~

本文目录 前言一、网络代理IP简介二、IPIDEA 优势2.1 多种类型IP代理2.2 海量纯净代理池2.3 稳定高效数据收集架构 三、IP实操小Tips3.1 查看本地网络IP3.2 使用浏览器IP3.3 使用IPIDEA进行爬虫实操 前言 各位友友,大家好,马上就到2024年了,…

[Angular] 笔记 6:ngStyle

ngStyle 指令: 用于更新 HTML 元素的样式。设置一个或多个样式属性&#xff0c;用以冒号分隔的键值对指定。键是样式名称&#xff0c;带有可选的 .<unit> 后缀&#xff08;如 ‘top.px’、‘font-style.em’&#xff09;&#xff0c;值为待求值的表达式&#xff0c;得到…

【泛型中K T V E? Object等分别代表什么含 义】

✅ 泛型中K T V E? Object等分别代表什么含义 ✅ 典型解析✅代码示例 ✅ 典型解析 E - Element (在集合中使用&#xff0c;因为集合中存放的是元素) T-Type (Java 类) K- Key (键) V - Value (值) N - Number (数值类型) ? - 表示不确定的iava类型 (无限制通配符类型) …

鸿蒙和各大厂合作,是不是要火起来

今年9月底&#xff0c;在华为秋季全场景新品发布会上&#xff0c;华为常务董事、终端BG CEO余承东宣布&#xff0c;鸿蒙原生应用全面启动&#xff0c;HarmonyOS NEXT开发者预览版将在2024年第一季度开放。 近日&#xff0c;腾讯、阿里、美团、网易&#xff0c;外包大厂中软国际…

微信小程序购物车页面实现

目录 32.商品加入购物车逻辑实现&#xff08;前端&#xff09; 33.购物车页面收货地址实现 34.购物车商品列表显示实现 37.购物车商品复选框选中业务处理 38.购物车全选复选框选中业务处理 39.购物车商品数量编辑实现 40.购物车商品数量为0判定是否删除 42.商品详情立即…

只更新软件,座椅为何能获得加热功能?——一文读懂OTA

2020年&#xff0c;特斯拉发布过一次OTA更新&#xff0c;车主可以通过这次系统更新获得座椅加热功能。当时&#xff0c;这则新闻震惊了车圈和所有车主&#xff0c;彼时的大家还没有把汽车当作可以“升级”的智能设备。 如今3年过去了&#xff0c;车主对各家车企的OTA升级早已见…

FCIS 2023网络安全创新大会-核心PPT资料下载

一、峰会简介 本次会议的主题是“AI大模型、人工智能与智能制造安全、攻击面管理与供应链安全”。 1、AI大模型 会议首先探讨了AI大模型在网络安全领域的应用。AI大模型是一种基于深度学习的模型&#xff0c;具有强大的特征提取和分类能力&#xff0c;可以用于检测和防御各种…

Unity3D移动端实现摇一摇功能

手机摇一摇功能在平时项目开发中是很常见的需求&#xff0c;利用Unity的重力感应可以很方便的实现该功能。 Unity简化了重力感应的开发&#xff0c; 通过访问Input.acceleration属性&#xff0c;取回加速度传感器的值。首先我们看一下重力传感器的方向问题。Unity3D中重量的取…

四、Spring IoC实践和应用(基于注解方式管理 Bean)

本章概要 基于注解方式管理 Bean 实验一&#xff1a; Bean注解标记和扫描 (IoC)实验二&#xff1a; 组件&#xff08;Bean&#xff09;作用域和周期方法注解实验三&#xff1a; Bean属性赋值&#xff1a;引用类型自动装配 (DI)实验四&#xff1a; Bean属性赋值&#xff1a;基本…

在MacOS上Qt配置OpenCV并进行测试

一.Qt环境准备 上一篇博客我讲了如何下载配置OpenCV库&#xff0c;但是在Qt5.15.2使用OpenCV库时&#xff0c;出现了一个问题就是我下载的Qt5.15.2是x86架构的&#xff0c;不能对OpenCV库进行链接&#xff0c;而OpenCV库是arm架构的 直接使用Qt5.15.2编译链接OpenCV库链接头文件…

千帆 AppBuilder 初体验,不仅解决解决了我筛选简历的痛苦,更是让提效10倍!

文章目录 &#x1f31f; 前言&#x1f31f; 什么是百度智能云千帆 AppBuilder&#x1f31f; 百度智能云千帆 AppBuilder 初体验&#x1f31f; 利用千帆AppBuilder搭建简历小助手&#x1f31f; 让人眼前一亮的神兵利器 - 超级助理 &#x1f31f; 前言 前两天朋友 三掌柜 去北京…

PostGIS学习教程十四:更多的空间连接

PostGIS学习教程十四&#xff1a;更多的空间连接 在上一节中&#xff0c;我们看到了ST_Centroid(geometry)和ST_Union([geometry])函数&#xff0c;以及一些简单的示例。在本节中&#xff0c;我们将用它们做一些更详细的事情。 提示&#xff1a;写完文章后&#xff0c;目录可以…

Jmeter 性能 —— 监控服务器!

Jmeter监控Linux需要三个文件 JMeterPlugins-Extras.jar (包&#xff1a;JMeterPlugins-Extras-1.4.0.zip)JMeterPlugins-Standard.jar (包&#xff1a;JMeterPlugins-Standard-1.4.0.zip)ServerAgent-2.2.3.zip 1、Jemter 安装插件 在插件管理中心的搜索Servers Performan…

MySQL运维实战(1.2)安装部署:使用二进制安装部署

作者&#xff1a;俊达 引言 上一篇我们使用了RPM进行安装部署&#xff0c;这是一种安装快速、简化部署和管理过程、与操作系统提供的包管理工具紧密集成的部署方法。此外&#xff0c;当你需要更高的灵活性和自定义性&#xff0c;并且愿意承担一些额外的手动配置和管理工作&am…

HBuilderX项目配置使用uview

配置uview&#xff0c;先安装再配置 如果没有package.json文件&#xff0c;先打开终端&#xff0c;执行命令 npm init -y 然后就会生成 package.json 安装 使用npm安装uview npm install uview-ui2.0.36 安装好之后&#xff0c;可以看到package.json里面已经显示版本了 查…

Unity中Shader旋转矩阵(四维旋转矩阵)

文章目录 前言一、围绕X轴旋转1、可以使用上篇文章中&#xff0c;同样的方法推导得出围绕X轴旋转的点阵。2、求M~rotate~ 二、围绕Y轴旋转1、可以使用上篇文章中&#xff0c;同样的方法推导得出围绕Y轴旋转的点阵。2、求M~rotate~ 三、围绕Z轴旋转1、可以使用上篇文章中&#x…

2000+线下门店数字化转型,盘活近500+门店账号!

伴随着社交媒体的快速发展&#xff0c;消费者的注意力开始往线上转移。社交媒体在消费者购买决策过程中发挥着越来越重要的作用&#xff0c;逐渐成为大家获取信息、产品种草并购买下单的平台。 今年双十一期间&#xff0c;抖音商城多数品类销售额均呈现大幅增长趋势&#xff0c…

MPI安装与程序设计

MPI MPI&#xff08;Message Passing Interface&#xff09;是一种用于编写并行程序的标准和库&#xff0c;用于在分布式内存系统中进行消息传递和并行计算。MPI提供了一组函数和语义&#xff0c;用于在多个进程之间进行通信和同步&#xff0c;以实现并行计算和并行任务的协调…

ASP.Net实现姓名添加查询(三层架构)

目录 演示功能&#xff1a; 点击启动生成页面 点击搜索模糊查询 点击添加跳转新界面 点击Button添加姓名 步骤&#xff1a; 1、建文件 2、添加引用关系 3、根据数据库中的列写Models下的XueshengModels类 4、DAL下的DBHelper&#xff08;对数据库进行操作&#xff09;…