深度学习数据处理(一)

        在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.hqwc.cn/news/293216.html

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

相关文章

Android Studio 安装和使用

前些天,打开了几年前的一个Android Studio app项目,使用安卓虚拟机仿真app崩溃,怀疑是不是中间升级过Android Studio导致异常的,马上脑子一热卸载了,结果上次踩过的坑,一个没少又踩一次,谨以此文…

STM32的以太网外设+PHY(LAN8720)使用详解(7):以太网数据接收及发送测试

0 工具准备 1.野火 stm32f407霸天虎开发板 2.LAN8720数据手册 3.STM32F4xx中文参考手册 4.Wireshark1 以太网数据接收测试 1.1 以太网数据接收测试(轮询) 我们在主循环内轮询RX DMA描述符标志位查看是否接收到了数据,如果接收到了则将数据…

电子学会C/C++编程等级考试2022年12月(六级)真题解析

C/C++等级考试(1~8级)全部真题・点这里 第1题:区间合并(2022-12-六级) 给定 n 个闭区间 [ai; bi],其中i=1,2,...,n。任意两个相邻或相交的闭区间可以合并为一个闭区间。例如,[1;2] 和 [2;3] 可以合并为 [1;3],[1;3] 和 [2;4] 可以合并为 [1;4],但是[1;2] 和 [3;4] 不可…

Tg2520smn ((tcxo / vc-tcxo)高稳定性)

TG2520SMN是一款高稳定性的(TCXO/VC-TCXO)产品,其频率输出范围为10MHz至55MHz,提供多种电源电压选项,分别为1.8 V类型、2.8 V类型、3.0 V类型和3.3 V类型,该产品具备优异的频率/温度特性,最大的频率稳定性为0.5 10^6 …

word导入导出-Apache POI 和 Poi-tl

word 文件读取 使用Apache POI Word 进行读取文件 使用poi 时如果报ClassNotFoundException 等错误,请注意请求以下maven 文件的版本 Apache POI Word 说明文档:Apache POI Word 说明文档 maven 解决依赖冲突教程:https://www.cnblogs.com/…

企业数据传输文件的安全性是如何保障的?

随着数字化时代的兴起,企业对数据的依赖日益增加,数据已经成为业务决策和运营的核心。然而,企业在数据传输文件的安全性方面面临着严峻的挑战。本文将深入探讨企业数据传输文件安全性的重要性和意义,以及如何有效地应对这一挑战。…

HrSegNet 23年裂缝检测新文章基于PaddelPaddle和Paddleseg的复现

本文章是对2023年发表在Automation in Construction上论文 Real-time High-Resolution Neural Network with Semantic Guidance for Crack Segmentation 的复现。 我参考了作者上传至github的代码,并得到了作者的帮助。https://github.com/CHDyshli/HrSegNet4Cra…

通过生成表征的自条件图像生成

文章目录 摘要1、简介2、相关工作3、方法4、结果4.1、设置4.2、无条件类别的生成4.3、无分类器指导4.4、消融实验4.5、计算成本4.6、定性结果 5、讨论 摘要 https://arxiv.org/pdf/2312.03701.pdf 本文提出了表示条件图像生成(Representation-Conditioned Image Ge…

【Linux/gcc】C/C++——编译过程

前提:WSL2(Ubuntu)、gcc编译器。gcc安装命令: sudo apt-get install gcc 查看gcc版本: 目录 1、编译过程 1.1、预处理 1.2、编译与汇编 1.3、链接 2、gcc实验 2.1、预处理 2.2、编译 2.3、汇编 2.4、链接 1、…

前端学习——vuex的入门

学习一门技术最快捷的方式就是先了解其概念和使用场景,毕竟任何技术的出现都是为了解决某一个场景下的通用解决方案,并且使用最合理的方式去解决问题。 那么什么是vuex? Vuex 是一个专为 Vue.js 应用程序开发的状态管理模式 库。它采用集中…

【3d】designdoll 人偶 --- 修复手部

示例图: 打开人偶软件 设置手部细节 制作一个手型 方法一:krita live 修手(推荐) 将手型导入krita live生图,用框选工具框选手部 如果效果不好,请使用种子数。 方法二:PS SD修手(不…

Multi-value PBS

参考文献: [CIM19] Carpov S, Izabachne M, Mollimard V. New techniques for multi-value input homomorphic evaluation and applications[C]//Topics in Cryptology–CT-RSA 2019: The Cryptographers’ Track at the RSA Conference 2019, San Francisco, CA, …