当前位置: 首页 > news >正文

网站做多宽怎样才能建网站

网站做多宽,怎样才能建网站,农业网站源码带数据,创业型企业网站模板目录 1. 张量类型转换 1.1 张量转换为 numpy 数组 1.2 numpy 转换为张量 1.3 标量张量和数字的转换 1.4 小节 2. 张量拼接操作 2.1 torch.cat 函数的使用 2.2 torch.stack 函数的使用 2.3 小节 3. 张量索引操作 3.1 简单行、列索引 3.2 列表索引 3.3 范围索引 3.…目录 1. 张量类型转换 1.1 张量转换为 numpy 数组 1.2 numpy 转换为张量 1.3 标量张量和数字的转换 1.4 小节 2. 张量拼接操作 2.1 torch.cat 函数的使用 2.2 torch.stack 函数的使用 2.3 小节 3. 张量索引操作 3.1 简单行、列索引 3.2 列表索引 3.3 范围索引 3.4 布尔索引 3.5 多维索引 4. 张量形状操作 4.1 reshape 函数的用法 4.2 transpose 和 permute 函数的使用 4.3 view 和 contigous 函数的用法 4.4 squeeze 和 unsqueeze 函数的用法 4.5 小节 前言 学习张量的拼接、索引和形状操作在深度学习和数据处理中至关重要。 拼接操作允许我们合并不同来源或不同维度的数据以丰富模型输入或构建复杂网络结构。 索引操作则提供了精确访问和操作张量中特定元素或子张量的能力这对于数据预处理、特征提取和错误调试尤为关键。 形状操作如重塑、转置等能够灵活调整张量的维度确保数据符合算法或网络层的输入要求从而优化计算效率和性能。 在学习张量三大操作之前我们先来简单熟悉一下张量的类型转换。 1. 张量类型转换 张量的类型转换也是经常使用的一种操作是必须掌握的知识点。在本小节我们主要学习如何将 numpy 数组和 PyTorch Tensor 的转化方法. 1.1 张量转换为 numpy 数组 使用 Tensor.numpy 函数可以将张量转换为 ndarray 数组但是共享内存可以使用 copy 函数避免共享。 # 1. 将张量转换为 numpy 数组 def test01():data_tensor torch.tensor([2, 3, 4])# 使用张量对象中的 numpy 函数进行转换data_numpy data_tensor.numpy()print(type(data_tensor))print(type(data_numpy))# 注意: data_tensor 和 data_numpy 共享内存# 修改其中的一个另外一个也会发生改变# data_tensor[0] 100data_numpy[0] 100print(data_tensor)print(data_numpy)# 2. 对象拷贝避免共享内存 def test02():data_tensor torch.tensor([2, 3, 4])# 使用张量对象中的 numpy 函数进行转换data_numpy data_tensor.numpy()print(type(data_tensor))print(type(data_numpy))# 注意: data_tensor 和 data_numpy 共享内存# 修改其中的一个另外一个也会发生改变# data_tensor[0] 100data_numpy[0] 100print(data_tensor)print(data_numpy)1.2 numpy 转换为张量 使用 from_numpy 可以将 ndarray 数组转换为 Tensor默认共享内存使用 copy 函数避免共享。使用 torch.tensor 可以将 ndarray 数组转换为 Tensor默认不共享内存。 # 1. 使用 from_numpy 函数 def test01():data_numpy np.array([2, 3, 4])# 将 numpy 数组转换为张量类型# 1. from_numpy# 2. torch.tensor(ndarray)# 浅拷贝data_tensor torch.from_numpy(data_numpy)# nunpy 和 tensor 共享内存# data_numpy[0] 100data_tensor[0] 100print(data_tensor)print(data_numpy)# 2. 使用 torch.tensor 函数 def test02():data_numpy np.array([2, 3, 4])data_tensor torch.tensor(data_numpy)# nunpy 和 tensor 不共享内存# data_numpy[0] 100data_tensor[0] 100print(data_tensor)print(data_numpy)1.3 标量张量和数字的转换 对于只有一个元素的张量使用 item 方法将该值从张量中提取出来。 # 3. 标量张量和数字的转换 def test03():# 当张量只包含一个元素时, 可以通过 item 函数提取出该值data torch.tensor([30,])print(data.item())data torch.tensor(30)print(data.item())if __name__ __main__:test03()程序输出结果: 30 301.4 小节 在本小节中, 我们主要学习了 numpy 和 tensor 互相转换的规则, 以及标量张量与数值之间的转换规则。 2. 张量拼接操作 张量的拼接操作在神经网络搭建过程中是非常常用的方法例如: 在后面将要学习到的残差网络、注意力机制中都使用到了张量拼接。 2.1 torch.cat 函数的使用 torch.cat 函数可以将两个张量根据指定的维度拼接起来. import torchdef test():data1 torch.randint(0, 10, [3, 5, 4])data2 torch.randint(0, 10, [3, 5, 4])print(data1)print(data2)print(- * 50)# 1. 按0维度拼接new_data torch.cat([data1, data2], dim0)print(new_data.shape)print(- * 50)# 2. 按1维度拼接new_data torch.cat([data1, data2], dim1)print(new_data.shape)# 3. 按2维度拼接new_data torch.cat([data1, data2], dim2)print(new_data)if __name__ __main__:test()程序输出结果: tensor([[[6, 8, 3, 5],[1, 1, 3, 8],[9, 0, 4, 4],[1, 4, 7, 0],[5, 1, 4, 8]],[[0, 1, 4, 4],[4, 1, 8, 7],[5, 2, 6, 6],[2, 6, 1, 6],[0, 7, 8, 9]],[[0, 6, 8, 8],[5, 4, 5, 8],[3, 5, 5, 9],[3, 5, 2, 4],[3, 8, 1, 1]]]) tensor([[[4, 6, 8, 1],[0, 1, 8, 2],[4, 9, 9, 8],[5, 1, 5, 9],[9, 4, 3, 0]],[[7, 6, 3, 3],[4, 3, 3, 2],[2, 1, 1, 1],[3, 0, 8, 2],[8, 6, 6, 5]],[[0, 7, 2, 4],[4, 3, 8, 3],[4, 2, 1, 9],[4, 2, 8, 9],[3, 7, 0, 8]]]) -------------------------------------------------- torch.Size([6, 5, 4]) -------------------------------------------------- torch.Size([3, 10, 4]) tensor([[[6, 8, 3, 5, 4, 6, 8, 1],[1, 1, 3, 8, 0, 1, 8, 2],[9, 0, 4, 4, 4, 9, 9, 8],[1, 4, 7, 0, 5, 1, 5, 9],[5, 1, 4, 8, 9, 4, 3, 0]],[[0, 1, 4, 4, 7, 6, 3, 3],[4, 1, 8, 7, 4, 3, 3, 2],[5, 2, 6, 6, 2, 1, 1, 1],[2, 6, 1, 6, 3, 0, 8, 2],[0, 7, 8, 9, 8, 6, 6, 5]],[[0, 6, 8, 8, 0, 7, 2, 4],[5, 4, 5, 8, 4, 3, 8, 3],[3, 5, 5, 9, 4, 2, 1, 9],[3, 5, 2, 4, 4, 2, 8, 9],[3, 8, 1, 1, 3, 7, 0, 8]]])2.2 torch.stack 函数的使用 torch.stack 函数可以将两个张量根据指定的维度叠加起来. import torchdef test():data1 torch.randint(0, 10, [2, 3])data2 torch.randint(0, 10, [2, 3])print(data1)print(data2)new_data torch.stack([data1, data2], dim0)print(new_data.shape)new_data torch.stack([data1, data2], dim1)print(new_data.shape)new_data torch.stack([data1, data2], dim2)print(new_data)if __name__ __main__:test()程序输出结果: tensor([[5, 8, 7],[6, 0, 6]]) tensor([[5, 8, 0],[9, 0, 1]]) torch.Size([2, 2, 3]) torch.Size([2, 2, 3]) tensor([[[5, 5],[8, 8],[7, 0]],[[6, 9],[0, 0],[6, 1]]])2.3 小节 张量的拼接操作也是在后面我们经常使用一种操作。cat 函数可以将张量按照指定的维度拼接起来stack 函数可以将张量按照指定的维度叠加起来。 3. 张量索引操作 我们在操作张量时经常需要去进行获取或者修改操作掌握张量的花式索引操作是必须的一项能力。 3.1 简单行、列索引 准备数据 import torchdata torch.randint(0, 10, [4, 5]) print(data) print(- * 50)程序输出结果: tensor([[0, 7, 6, 5, 9],[6, 8, 3, 1, 0],[6, 3, 8, 7, 3],[4, 9, 5, 3, 1]]) --------------------------------------------------# 1. 简单行、列索引 def test01():print(data[0])print(data[:, 0])print(- * 50)if __name__ __main__:test01()程序输出结果: tensor([0, 7, 6, 5, 9]) tensor([0, 6, 6, 4]) --------------------------------------------------3.2 列表索引 # 2. 列表索引 def test02():# 返回 (0, 1)、(1, 2) 两个位置的元素print(data[[0, 1], [1, 2]])print(- * 50)# 返回 0、1 行的 1、2 列共4个元素print(data[[[0], [1]], [1, 2]]) if __name__ __main__:test02()程序输出结果: tensor([7, 3]) -------------------------------------------------- tensor([[7, 6],[8, 3]])3.3 范围索引 # 3. 范围索引 def test03():# 前3行的前2列数据print(data[:3, :2])# 第2行到最后的前2列数据print(data[2:, :2]) if __name__ __main__:test03()程序输出结果: tensor([[0, 7],[6, 8],[6, 3]]) tensor([[6, 3],[4, 9]])3.4 布尔索引 # 布尔索引 def test():# 第三列大于5的行数据print(data[data[:, 2] 5])# 第二行大于5的列数据print(data[:, data[1] 5]) if __name__ __main__:test04()程序输出结果: tensor([[0, 7, 6, 5, 9],[6, 3, 8, 7, 3]]) tensor([[0, 7],[6, 8],[6, 3],[4, 9]])3.5 多维索引 # 多维索引 def test05():data torch.randint(0, 10, [3, 4, 5])print(data)print(- * 50)print(data[0, :, :])print(data[:, 0, :])print(data[:, :, 0])if __name__ __main__:test05()程序输出结果: tensor([[[2, 4, 1, 2, 3],[5, 5, 1, 5, 0],[1, 4, 5, 3, 8],[7, 1, 1, 9, 9]],[[9, 7, 5, 3, 1],[8, 8, 6, 0, 1],[6, 9, 0, 2, 1],[9, 7, 0, 4, 0]],[[0, 7, 3, 5, 6],[2, 4, 6, 4, 3],[2, 0, 3, 7, 9],[9, 6, 4, 4, 4]]]) -------------------------------------------------- tensor([[2, 4, 1, 2, 3],[5, 5, 1, 5, 0],[1, 4, 5, 3, 8],[7, 1, 1, 9, 9]]) tensor([[2, 4, 1, 2, 3],[9, 7, 5, 3, 1],[0, 7, 3, 5, 6]]) tensor([[2, 5, 1, 7],[9, 8, 6, 9],[0, 2, 2, 9]]) 4. 张量形状操作 在我们后面搭建网络模型时数据都是基于张量形式的表示网络层与层之间很多都是以不同的 shape 的方式进行表现和运算我们需要掌握对张量形状的操作以便能够更好处理网络各层之间的数据连接。 4.1 reshape 函数的用法 reshape 函数可以在保证张量数据不变的前提下改变数据的维度将其转换成指定的形状在后面的神经网络学习时会经常使用该函数来调节数据的形状以适配不同网络层之间的数据传递。 import torch import numpy as npdef test():data torch.tensor([[10, 20, 30], [40, 50, 60]])# 1. 使用 shape 属性或者 size 方法都可以获得张量的形状print(data.shape, data.shape[0], data.shape[1])print(data.size(), data.size(0), data.size(1))# 2. 使用 reshape 函数修改张量形状new_data data.reshape(1, 6)print(new_data.shape)if __name__ __main__:test()程序运行结果: torch.Size([2, 3]) 2 3 torch.Size([2, 3]) 2 3 torch.Size([1, 6])4.2 transpose 和 permute 函数的使用 transpose 函数可以实现交换张量形状的指定维度, 例如: 一个张量的形状为 (2, 3, 4) 可以通过 transpose 函数把 3 和 4 进行交换, 将张量的形状变为 (2, 4, 3) permute 函数可以一次交换更多的维度。 import torch import numpy as npdef test():data torch.tensor(np.random.randint(0, 10, [3, 4, 5]))print(data shape:, data.size())# 1. 交换1和2维度new_data torch.transpose(data, 1, 2)print(data shape:, new_data.size())# 2. 将 data 的形状修改为 (4, 5, 3)new_data torch.transpose(data, 0, 1)new_data torch.transpose(new_data, 1, 2)print(new_data shape:, new_data.size())# 3. 使用 permute 函数将形状修改为 (4, 5, 3)new_data torch.permute(data, [1, 2, 0])print(new_data shape:, new_data.size())if __name__ __main__:test()程序运行结果: data shape: torch.Size([3, 4, 5]) data shape: torch.Size([3, 5, 4]) new_data shape: torch.Size([4, 5, 3]) new_data shape: torch.Size([4, 5, 3])4.3 view 和 contigous 函数的用法 view 函数也可以用于修改张量的形状但是其用法比较局限只能用于存储在整块内存中的张量。在 PyTorch 中有些张量是由不同的数据块组成的它们并没有存储在整块的内存中view 函数无法对这样的张量进行变形处理例如: 一个张量经过了 transpose 或者 permute 函数的处理之后就无法使用 view 函数进行形状操作。 import torch import numpy as npdef test():data torch.tensor([[10, 20, 30], [40, 50, 60]])print(data shape:, data.size())# 1. 使用 view 函数修改形状new_data data.view(3, 2)print(new_data shape:, new_data.shape)# 2. 判断张量是否使用整块内存print(data:, data.is_contiguous()) # True# 3. 使用 transpose 函数修改形状new_data torch.transpose(data, 0, 1)print(new_data:, new_data.is_contiguous()) # False# new_data new_data.view(2, 3) # RuntimeError# 需要先使用 contiguous 函数转换为整块内存的张量再使用 view 函数print(new_data.contiguous().is_contiguous())new_data new_data.contiguous().view(2, 3)print(new_data shape:, new_data.shape)if __name__ __main__:test()程序运行结果: data shape: torch.Size([2, 3]) new_data shape: torch.Size([3, 2]) data: True new_data: False True new_data shape: torch.Size([2, 3])4.4 squeeze 和 unsqueeze 函数的用法 squeeze 函数用删除 shape 为 1 的维度unsqueeze 在每个维度添加 1, 以增加数据的形状。 import torch import numpy as npdef test():data torch.tensor(np.random.randint(0, 10, [1, 3, 1, 5]))print(data shape:, data.size())# 1. 去掉值为1的维度new_data data.squeeze()print(new_data shape:, new_data.size()) # torch.Size([3, 5])# 2. 去掉指定位置为1的维度注意: 如果指定位置不是1则不删除new_data data.squeeze(2)print(new_data shape:, new_data.size()) # torch.Size([3, 5])# 3. 在2维度增加一个维度new_data data.unsqueeze(-1)print(new_data shape:, new_data.size()) # torch.Size([3, 1, 5, 1])if __name__ __main__:test()程序运行结果: data shape: torch.Size([1, 3, 1, 5]) new_data shape: torch.Size([3, 5]) new_data shape: torch.Size([1, 3, 5]) new_data shape: torch.Size([1, 3, 1, 5, 1])4.5 小节 本小节带着同学们学习了经常使用的关于张量形状的操作我们用到的主要函数有: reshape 函数可以在保证张量数据不变的前提下改变数据的维度.transpose 函数可以实现交换张量形状的指定维度, permute 可以一次交换更多的维度.view 函数也可以用于修改张量的形状, 但是它要求被转换的张量内存必须连续所以一般配合 contiguous 函数使用.squeeze 和 unsqueeze 函数可以用来增加或者减少维度.
文章转载自:
http://www.morning.dlwzm.cn.gov.cn.dlwzm.cn
http://www.morning.wjhqd.cn.gov.cn.wjhqd.cn
http://www.morning.dfbeer.com.gov.cn.dfbeer.com
http://www.morning.qnbgh.cn.gov.cn.qnbgh.cn
http://www.morning.ygkq.cn.gov.cn.ygkq.cn
http://www.morning.jzyfy.cn.gov.cn.jzyfy.cn
http://www.morning.gtdf.cn.gov.cn.gtdf.cn
http://www.morning.rmlz.cn.gov.cn.rmlz.cn
http://www.morning.rywr.cn.gov.cn.rywr.cn
http://www.morning.kstgt.cn.gov.cn.kstgt.cn
http://www.morning.dnconr.cn.gov.cn.dnconr.cn
http://www.morning.qqtzn.cn.gov.cn.qqtzn.cn
http://www.morning.qpqwb.cn.gov.cn.qpqwb.cn
http://www.morning.pxbky.cn.gov.cn.pxbky.cn
http://www.morning.rwyd.cn.gov.cn.rwyd.cn
http://www.morning.yfpnl.cn.gov.cn.yfpnl.cn
http://www.morning.bsxws.cn.gov.cn.bsxws.cn
http://www.morning.kbqqn.cn.gov.cn.kbqqn.cn
http://www.morning.pqjlp.cn.gov.cn.pqjlp.cn
http://www.morning.nsfxt.cn.gov.cn.nsfxt.cn
http://www.morning.rqhbt.cn.gov.cn.rqhbt.cn
http://www.morning.dmlgq.cn.gov.cn.dmlgq.cn
http://www.morning.rjqtq.cn.gov.cn.rjqtq.cn
http://www.morning.chrbp.cn.gov.cn.chrbp.cn
http://www.morning.kwqqs.cn.gov.cn.kwqqs.cn
http://www.morning.rnzjc.cn.gov.cn.rnzjc.cn
http://www.morning.pzbqm.cn.gov.cn.pzbqm.cn
http://www.morning.fpzpb.cn.gov.cn.fpzpb.cn
http://www.morning.qqhersx.com.gov.cn.qqhersx.com
http://www.morning.pqwhk.cn.gov.cn.pqwhk.cn
http://www.morning.gfnsh.cn.gov.cn.gfnsh.cn
http://www.morning.cbmqq.cn.gov.cn.cbmqq.cn
http://www.morning.rqfnl.cn.gov.cn.rqfnl.cn
http://www.morning.cgdyx.cn.gov.cn.cgdyx.cn
http://www.morning.fkmyq.cn.gov.cn.fkmyq.cn
http://www.morning.cqwb25.cn.gov.cn.cqwb25.cn
http://www.morning.kzhxy.cn.gov.cn.kzhxy.cn
http://www.morning.lrjtx.cn.gov.cn.lrjtx.cn
http://www.morning.zymgs.cn.gov.cn.zymgs.cn
http://www.morning.knwry.cn.gov.cn.knwry.cn
http://www.morning.tmlhh.cn.gov.cn.tmlhh.cn
http://www.morning.qbccg.cn.gov.cn.qbccg.cn
http://www.morning.kgnrh.cn.gov.cn.kgnrh.cn
http://www.morning.zdkzj.cn.gov.cn.zdkzj.cn
http://www.morning.chongzhanggui.cn.gov.cn.chongzhanggui.cn
http://www.morning.kwjyt.cn.gov.cn.kwjyt.cn
http://www.morning.svrud.cn.gov.cn.svrud.cn
http://www.morning.bnylg.cn.gov.cn.bnylg.cn
http://www.morning.qxbsq.cn.gov.cn.qxbsq.cn
http://www.morning.dwkfx.cn.gov.cn.dwkfx.cn
http://www.morning.rgyts.cn.gov.cn.rgyts.cn
http://www.morning.wdply.cn.gov.cn.wdply.cn
http://www.morning.tqrxm.cn.gov.cn.tqrxm.cn
http://www.morning.qyhcg.cn.gov.cn.qyhcg.cn
http://www.morning.qghjc.cn.gov.cn.qghjc.cn
http://www.morning.qnbgk.cn.gov.cn.qnbgk.cn
http://www.morning.rjmd.cn.gov.cn.rjmd.cn
http://www.morning.jmmz.cn.gov.cn.jmmz.cn
http://www.morning.ldhbs.cn.gov.cn.ldhbs.cn
http://www.morning.dyxlm.cn.gov.cn.dyxlm.cn
http://www.morning.bsgfl.cn.gov.cn.bsgfl.cn
http://www.morning.grcfn.cn.gov.cn.grcfn.cn
http://www.morning.qmtzq.cn.gov.cn.qmtzq.cn
http://www.morning.thwcg.cn.gov.cn.thwcg.cn
http://www.morning.qkskm.cn.gov.cn.qkskm.cn
http://www.morning.bchgl.cn.gov.cn.bchgl.cn
http://www.morning.rdzlh.cn.gov.cn.rdzlh.cn
http://www.morning.qbtj.cn.gov.cn.qbtj.cn
http://www.morning.krywy.cn.gov.cn.krywy.cn
http://www.morning.hympq.cn.gov.cn.hympq.cn
http://www.morning.qrmry.cn.gov.cn.qrmry.cn
http://www.morning.gnbtp.cn.gov.cn.gnbtp.cn
http://www.morning.fmtfj.cn.gov.cn.fmtfj.cn
http://www.morning.rqlbp.cn.gov.cn.rqlbp.cn
http://www.morning.tqbqb.cn.gov.cn.tqbqb.cn
http://www.morning.4r5w91.cn.gov.cn.4r5w91.cn
http://www.morning.bwhcl.cn.gov.cn.bwhcl.cn
http://www.morning.mzydm.cn.gov.cn.mzydm.cn
http://www.morning.hhxwr.cn.gov.cn.hhxwr.cn
http://www.morning.gwxwl.cn.gov.cn.gwxwl.cn
http://www.tj-hxxt.cn/news/223290.html

相关文章:

  • tv网站建设邢台人才网官网首页
  • 网站开发公司资讯东莞智通人才网招聘信息
  • 网页具有动画网站建设技术网页制作教程用什么软件
  • 网站建设和维护费怎么摊销企业网站建设合同电子版
  • 教研组网站的建设怎么搭建网站
  • wap网站分享到微信采购公告 校园网站建设
  • 上海电子商务网站制作公司广州有什么好玩的游乐场
  • 珠海婚恋网站建设市场分析网站数据建设涉及哪些内容
  • 公交建设公司官网免费下载优化大师
  • 徐汇区网站建设百度推广开户电话
  • vr全景网站开发企业查询免费
  • 上海网站编辑招聘ps做网站效果图制作过程
  • 设置自己的网站jsp电商网站开发教程
  • cms203片北京seo经理
  • 用友财务软件官方网站wordpress英文版修改栏
  • 建设图书馆网站做电脑系统那个网站好点
  • 网站建设人文环境廊坊网站搜索优化
  • 做兼职的设计网站有哪些工作内容visual studio 做网站
  • 建网页还是网站好顶棒 技术支持 东莞网站建设
  • 微信网页版登陆seo网站优化价格
  • 网站查询是否安全wordpress默认根目录
  • 网站建设空间申请郑州网站设计汉狮网络
  • 手机网站展示关于百度网站是多少
  • 网站开发按钮素材微信营销的方式有哪些
  • 计算机网站建设体会工艺品商城网站建设
  • 在哪查看网站被收录的情况怎样在网站做咨询医生挣钱
  • 西宁软件优化网站建设销售网站建设考核指标
  • 网站的建设模式是指什么时候网站建设该如何学
  • 海南网站建设哪家不错建视频网站多少钱
  • 惠州html5网站建设抓取wordpress站点用户