神经网络学习2

news2024/11/24 16:05:09

张量(Tensor)是深度学习和科学计算中的基本数据结构,用于表示多维数组。张量可以看作是一个更广义的概念,涵盖了标量、向量、矩阵以及更高维度的数据结构。具体来说,张量的维度可以是以下几种形式:
标量(0维张量):
一个单一的数值。
例如:3.0。
向量(1维张量):
一维数组,即一个数值的列表。
例如:[1.0, 2.0, 3.0]。
矩阵(2维张量):
二维数组,即一个数值的表格。

在 PyTorch 中,张量可以通过 torch.tensor 函数创建。
创建标量张量:

import torch
scalar = torch.tensor(3.0)
print(scalar)  # tensor(3.0)

向量张良

vector = torch.tensor([1.0, 2.0, 3.0])
print(vector)  # tensor([1., 2., 3.])

创建矩阵张量:

matrix = torch.tensor([[1.0, 2.0], [3.0, 4.0]])
print(matrix)  # tensor([[1., 2.], [3., 4.]])

张量有许多有用的属性和方法,例如:
形状(Shape)

print(matrix.shape)  # torch.Size([2, 2])

数据类型(Data Type):

print(matrix.dtype)  # torch.float32

设备(Device):

print(matrix.device)  # 例如:cpu 或 cuda:0

torch.nn是一个实例化的使用,torch.nn.functrion是方法的使用。两个都很好用

卷积操作
在这里插入图片描述

卷积核:卷积核是一个小的矩阵,用于在输入数据上执行卷积操作。它的大小通常比输入数据小得多,例如 3x3、5x5 或 7x7。
滤波器:滤波器是卷积核的另一个名称,它与卷积核的功能相同。

卷积操作是将卷积核应用到输入数据的每个位置,通过滑动窗口的方式逐元素相乘并求和,生成一个新的输出值。以下是卷积操作的步骤:
将卷积核放在输入数据的一个位置上。
逐元素相乘并求和,得到一个新的输出值。
将卷积核移动到下一个位置,重复上述步骤,直到遍历整个输入数据。

卷积核的作用
特征提取:卷积核通过对局部区域的操作,可以提取不同层次的特征,例如边缘、纹理、颜色等。
参数共享:卷积核在整个输入数据上共享,使得模型参数减少,提高计算效率。
空间不变性:卷积核能够捕捉输入数据的空间特征,不受位置变化的影响。

在卷积神经网络中,通常会有多个卷积核,每个卷积核提取不同的特征。因此,卷积层的输出不仅包含空间维度(高度和宽度),还包含深度维度(通道数)。例如,一个卷积层可能有 32 个 3x3 的卷积核,输入是一个 RGB 图像(具有 3 个通道),输出将是 32 个特征图。

权重参数本来就是随机初始化,之后根据优化方法会一轮一轮的不断向最优解逼近
开始数值就是一个初始化数值,然后通过训练慢慢优化,最后得到合适的数值

注意:torchvision.transforms.ToTensor 是用于将 PIL 图像或 NumPy 数组转换为张量的,但它需要一个特定的输入格式。对于 NumPy 数组,可以直接使用 torch.tensor 进行转换。

典型的卷积神经网络期望输入是一个四维张量,形状为 (batch_size, channels, height, width)。
其中,batch_size 表示每个批次的样本数量,channels 表示输入图像的通道数(对于灰度图像通道数为 1,对于彩色图像通道数为 3),height 和 width 表示图像的高度和宽度。
下面是一个简单的卷积操作

import torch
import torch.nn.functional as F
import numpy as np
inputtensor = torch.tensor([[1, 2, 0, 3, 1],
                            [0, 1, 2, 3, 1],
                            [1, 2, 1, 0, 0],
                            [5, 2, 3, 1, 1],
                            [2, 1, 0, 1, 1]], dtype=torch.float32)
# 使用 NumPy 创建卷积核
np_kernel = np.random.randn(3, 3)

# 将 NumPy 数组转换为 PyTorch 张量
kernel = torch.tensor(np_kernel, dtype=torch.float32)

inputtensor=torch.reshape(inputtensor,(1,1,5,5))
kernel=torch.reshape(kernel,(1,1,3,3))
print(kernel.shape)
print(inputtensor.shape)

output=F.conv2d(inputtensor,kernel,stride=1)
print(output)
output2=F.conv2d(inputtensor,kernel,stride=2)
print(output2)

在这里插入图片描述
padding即在输入的周围进行填充一圈再进行卷积操作,空白部分默认视为0

import torch
import torch.nn.functional as F
import numpy as np
inputtensor = torch.tensor([[1, 2, 0, 3, 1],
                            [0, 1, 2, 3, 1],
                            [1, 2, 1, 0, 0],
                            [5, 2, 3, 1, 1],
                            [2, 1, 0, 1, 1]], dtype=torch.float32)
# 使用 NumPy 创建卷积核
np_kernel = np.random.randn(3, 3)

# 将 NumPy 数组转换为 PyTorch 张量
kernel = torch.tensor(np_kernel, dtype=torch.float32)

inputtensor=torch.reshape(inputtensor,(1,1,5,5))
kernel=torch.reshape(kernel,(1,1,3,3))
print(kernel.shape)
print(inputtensor.shape)

output=F.conv2d(inputtensor,kernel,stride=1)
print(output)
output2=F.conv2d(inputtensor,kernel,stride=2)
print(output2)
output3=F.conv2d(inputtensor,kernel,stride=1,padding=1)
print(output3)

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

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

相关文章

环保评A的意义与价值

环保评A,这个看似简单的称谓,背后却蕴藏着深厚的环保理念和实践标准。在当今社会,环保已经成为一项全球性的议题,各国都在努力推动绿色发展,实现可持续发展目标。那么,环保评A究竟是全国性的认证还是地方性…

在VMware中安装CentOS7(超详细的图文教程)

1、CentOS7的下载 官网下载地址:Download。 进入CentOS下载官网,找到64位的CentOS7版本。 点进来后,发现它给我们列出了所在区域可用镜像源(可以说是非常的良心的),我们随便选择一个,这里以阿…

Git使用-gitlab上面的项目如何整到本地的idea中

场景 一般我们在开发项目或者接手某个项目时,基本都要接触Git,比如上传项目代码,下载同事给你的交接代码等等。 这是一个基本功,小小整理一下日常操作中的使用。 第一步:在 GitLab 上找到你要克隆的项目,复…

C#传值参数 -1值类型 -2引用类型

传值参数 -1值类型 -2引用类型 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; //传值参数-1、值类型 2、引用类型 namespace PamatetersExample {class Program{static void Main(string[] args){St…

【odoo15】前端自定义模态弹窗

概要 在odoo15或者在15之前,odoo前端的owl框架还没完全替换当前前端框架的时候,我们很多时候都是用js或者jq来直接操作dom,那么我们如果需要在前端用到一个模态弹窗,可以怎么解决呢? 方法1 直接用js原生的模态弹窗&am…

CMU最新论文:机器人智慧流畅的躲避障碍物论文详细讲解

CMU华人博士生Tairan He最新论文:Agile But Safe: Learning Collision-Free High-Speed Legged Locomotion 代码开源:Code: https://github.com/LeCAR-Lab/ABS B站实际效果展示视频地址:bilibili效果地址 我会详细解读论文的内容,让我们开始吧…

基于Python+OpenCV+SVM车牌识别系统(GUI界面)【W3】

简介: 随着交通管理的日益复杂化和智能化需求的增加,车牌识别系统在安防、智慧交通管理等领域中扮演着重要角色。传统的车牌识别系统主要基于图像处理和模式识别技术,随着计算机视觉技术的发展,基于Python、OpenCV和机器学习算法的…

用于以太网PLC的跨网段无线WIFI通讯,IP地址转换

产品型号:NET50-NAT-W 使用范围:用于以太网PLC的跨网段无线WIFI通讯 产品介绍 工业通讯桥接器(NET50-NAT-W)用于以太网设备(PLC,数控,机器人等)的IP地址跨网段转换和无线WIFI通讯。…

Java | Leetcode Java题解之第151题反转字符串中的单词

题目: 题解: class Solution {public String reverseWords(String s) {StringBuilder sb trimSpaces(s);// 翻转字符串reverse(sb, 0, sb.length() - 1);// 翻转每个单词reverseEachWord(sb);return sb.toString();}public StringBuilder trimSpaces(S…

去掉eslint

1、在vue.config.js文件里加上下面的代码,然后重启就可以了! 2、vue.config.js文件代码: const { defineConfig } require(vue/cli-service) module.exports defineConfig({transpileDependencies: true,lintOnSave: false })

小数二分个人见解

小数二分 小数二分题目 小数二分 整数二分 是找边界点,而小数二分找的是 近似值。 整数二分是在一个整型数组当中 查找,而小数二分是在数轴中 查找,都是每次可以排除一半的区间,只不过小数二分中while循环内的结束条件和整数二分…

酒店民宿小程序开发,旅游业发展下的商业机遇

随着人们生活水平的日益提高,对各种娱乐方式的需求在不断上升,其中旅游成为了大众的“新宠”。旅游业的快速发展也推动了酒店民宿的蓬勃发展,打造一个便捷高效的线上酒店民宿小程序成为了至关重要的发展趋势! 如今,不…

vulnhub靶场-xxe打靶教程

目录 靶机导入 信息收集 发现IP 端口扫描 目录扫描 漏洞利用 靶机下载地址:XXE Lab: 1 ~ VulnHub 靶机导入 导入虚拟机 开启虚拟机 信息收集 发现IP arp-scan -l 发现靶机IP是192.168.202.150 端口扫描 使用nmap进行扫描 nmap -sS -A 192.168.202.150 …

SJ703安全帽防静电测试仪

一、仪器用途 专门检测安全帽防静电性能。 二、仪器特征 1、携带使用轻便、量程宽广、读数准确,耐震性强等卓越优点 2、超上限时显示‘1’提示和低于下限时声响报警。 3、电池欠压时显示欠压符号“←”提示。 4、交流或直流(电池)供电任…

OpenCV滤波器

滤波的作用 一副图像通过滤波器得到另一副图像;其中滤波器又称为卷积核,滤波的过程称为卷积。 图像卷积效果图 卷积的过程 一 卷积的几个基本概念 1 卷积核的大小 卷积核一般为奇数,如3X3,5X5,7X7等。 一方面是增加padding的原因。 另一…

TCP相关细节

1. 常用TCP参数 1.1 ReceiveBufferSize ReceiveBuffersize指定了操作系统读缓冲区的大小, 默认值是8192(如图5-10 所示)。在第4章的例子中,会有"假设操作系统缓冲区的长度是8" 这样的描述,可通过socket.ReceiveBufferSize 8 实现。当接收端缓冲区满了的时…

【AIGC】MetaGPT原理以及应用

目录 MetaGPT原理 MetaGPT应用 MetaGPT和传统编程语言相比有什么优势和劣势 视频中的PPT 参考资料 MetaGPT原理 MetaGPT是一种多智能体框架,它结合了元编程技术,通过标准化操作程序(SOPs)来协调基于大语言模型的多智能体系统…

【问题】YOLOv9不能打印计算量问题的解决方法

【问题】改进YOLOv9后,发现训练过程中没有输出Gflops的值,如下图所示。 【解决方法】修改ultralytics/utils/torch_utils.py文件的内容。 stride = max(int(model.stride.max()), 32) if hasattr(model, stride) else 32 # max stride 修

GenICam标准(六)

系列文章目录 GenICam标准(一) GenICam标准(二) GenICam标准(三) GenICam标准(四) GenICam标准(五) GenICam标准(六) 文章目录 系列文…

剃头师傅不担心AI大模型 到底谁该担心?

到底学什么,不会被AI替代? 我家附近有一家美容店,已经开了20多年,店里的一位伙计硬是靠着自己的坚持从学徒熬成了门店的合伙人,所以现在去理发时,我都叫他“周董”。 这天,我问他,…