分割与合并

import torch
import numpy as np
#假设a是班级1-4的数据,每个班级里有32个学生,每个学生有8门分数
#假设b是班级5-9的数据,每个班级里有32个学生,每个学生有8门分数
#现在要将两个班级合并
a=torch.rand(4,32,8)
b=torch.rand(5,32,8)
c=torch.cat([a,b],dim=0) #在0维度上进行a和b的拼接.注意只有在拼接的维度上数字可以不一致
print(c.shape) #使用stack拼接
c1=torch.rand(3,8)
d1=torch.rand(3,8)
cd=torch.stack([c1,d1],dim=0)
print('使用stack拼接',cd.shape) #在0维度进行拼接,会在前面插入多一个2的维度,
# 如果新生维度取0就是取上半部分,如果取1就是取下半部分
print('这里是c1',c1)
print('这里是d1',d1)
print('取上半部分',cd[0,0:,0:])
print('取上半部分',cd[1,0:,0:]) #拆分操作
#现在想吧(3,32,8)拆分成三个(1,32,8)
t1=torch.rand(3,32,8)
ts1,ts2,ts3=t1.split(1,dim=0) #将维度0拆分成每个都是1的
print(ts1.shape,ts2.shape,ts3.shape)
#现在想吧(3,32,8)拆分成两个(2,32,8)和(1,32,8)
ts1,ts2=t1.split([2,1],dim=0) #将维度0拆分成第一组两个,第二组1个
print(ts1.shape,ts2.shape)
#使用chunk按块的数量拆分
t1=torch.rand(6,32,8)
ts1,ts2,ts3=t1.chunk(3,dim=0) #将维度0拆分成3块
print(ts1.shape,ts2.shape,ts3.shape)

数学运算

#数学运算
a=torch.rand(3,4)
b=torch.rand(4)
print(a+b) #能执行成功是因为b会用自动拓展使得变成(1,4),然后变成(3,4)来和a运算
#print(a*b)
#print(a/b)
#print(a-b) #矩阵相乘torch.matmul
a=torch.ones(3,3)
b=torch.tensor([[2,2,2],[2,2,2],[2,2,2]]).type(torch.float32)
print(torch.matmul(a,b)) #四维情况下的matmul,此时前两维度不变,取后两维做成矩阵然后进行乘积
a=torch.rand(4,3,28,64)
b=torch.rand(4,3,64,32)
print(torch.matmul(a,b).shape) #有关于取值
qq=torch.tensor(3.14)
print('向下取',qq.floor(),'向上取',qq.ceil(),'取整数部分',qq.trunc(),'取小数部分',qq.frac())
print('四舍五入取整',qq.round()) #筛选
grad=torch.rand(2,3)*15
print(grad.max())
print(grad.median())
print(grad)
print(grad.clamp(9)) #小于9的变成9
print(grad.clamp(6,9)) #大于9的变成9,小于6的变成6 #求范数
f=torch.tensor([[2,2,2,2],[2,2,2,2]]).type(torch.float32)
print(f.norm(1),f.norm(2)) #可以加上dim指定某个维度求范数 #mean和prod和max和min 括号里面如果不加维度的参数会默认将所有维度打平成一个向量来求
m=torch.tensor([[0,1,2,3],[4,5,6,7]]).type(torch.float32)
print(m.shape)
#mean等于的是求和起来再除以size
print(m.mean())
#prod是乘积
print(m.prod())
#上面是打平来求的,下面来看不打平的
print('不打平的求后面这两个列的乘积',m.prod(1))
print('返回列的最大值的索引',m.argmax(1))

高级操作

#keepdim用于求max或者argmax的时候,维度不改变,其他位置自动添加1
#topk,按顺序取几个大的
cd=torch.rand(2,3)
print('初始的tensor',cd)
print('取1维(针对前面的那一维也就是行)上最大的两个',cd.topk(2,dim=1))
#topk,按顺序取几个小的
cd=torch.rand(2,3)
print('初始的tensor',cd)
print('取1维(针对前面的那一维也就是行)上最小的两个',cd.topk(2,dim=1,largest=False))
#取第n个小的
cd=torch.rand(2,8)
print('初始的tensor',cd)
print('取1维(针对前面的那一维也就是行)上最小的第五个(第五小)',cd.kthvalue(5,dim=1)) # where把用其他两个tensort通过特定的条件生成一个tensor
cond=torch.tensor([[0.679,0.7271],[0.8884,0.4163]])
a=torch.tensor([[0.,0.],[0.,0.]])
b=torch.tensor([[1.,1.],[1.,1.]])
print(torch.where(cond>0.5,a,b))

神经元——激活函数

有x0到xi的多个输入,然后经过多个输入的ax+b的加权平均得到一个值,如果这个值大于阈值就可以做出反应,

而且这个反应的输出点平是定的,如果这个值不达到阈值就不会作出反应

为了弄可以求导的连续的提出了一种激活函数sigmoid(区间从0到1)

激活函数的导数

#调用sigmore函数
sig=torch.linspace(-100,100,10)
print(torch.sigmoid(sig))

另外一种的激活函数tanh(区间从-1到1)

tanh激活函数求得的导数的值

#调用tanh函数
tanh=torch.linspace(-3,3,5)
print(torch.tanh(tanh))

relu整形的线性单元

#调用relu函数
relu=torch.linspace(-3,3,5)
print(torch.relu(relu))

loss损失种类及其求导后的公式

1.均方差

均方差里面有两种,一种是loss还有一种是norm,norm相当于是对loss的开平方

import torch
x = torch.tensor([1]).type(torch.float32) #x的值是单个数字1
x.requires_grad_() #设置x是需要进行求导的
y = x*2 #公式
grads = torch.autograd.grad(outputs=y, inputs=x)[0] #导数是output(y)去对input--x求导,由于y=2*1=2是标量,不是向量
#所以不用设置grad_outputs
print(grads)

pytorch——合并分割的更多相关文章

  1. js数组常用操作方法小结(增加,删除,合并,分割等)

    本文实例总结了js数组常用操作方法.分享给大家供大家参考,具体如下: var arr = [1, 2, 3, 4, 5]; //删除并返回数组中第一个元素 var theFirst = arr.shi ...

  2. 【daily】文件分割限速下载,及合并分割文件

    说明 主要功能: 1) 分割文件, 生成下载任务; 2) 定时任务: 检索需要下载的任务, 利用多线程下载并限制下载速度; 3) 定时任务: 检索可合并的文件, 把n个文件合并为完整的文件. GitH ...

  3. NumPy学习(索引和切片,合并,分割,copy与deep copy)

    NumPy学习(索引和切片,合并,分割,copy与deep copy) 目录 索引和切片 合并 分割 copy与deep copy 索引和切片 通过索引和切片可以访问以及修改数组元素的值 一维数组 程 ...

  4. Linux大文件split分割以及cat合并

    文件大小分割文件时,需要以-C参数指定分割后的文件大小: $ split -C 100M large_file.txt stxt   如上所示,我们将大文件large_file.txt按100M大小进 ...

  5. Linux中split大文件分割和cat合并文件

    当需要将较大的数据上传到服务器,或从服务器下载较大的日志文件时,往往会因为网络或其它原因而导致传输中断而不得不重新传输.这种情况下,可以先将大文件分割成小文件后分批传输,传完后再合并文件. 1.分割 ...

  6. WinRAR分割超大文件

    在自己的硬盘上有一个比较大的文件,想把它从网上通过E-Mail发送给朋友时,却发现对方的收信服务器不能够支持那么大的文件……,这时即使用ZIP等压缩软件也无济于事,因为该文件本身已经被压缩过了.于是许 ...

  7. Atitit 数据存储视图的最佳实际best practice attilax总结

    Atitit 数据存储视图的最佳实际best practice attilax总结 1.1. 视图优点:可读性的提升1 1.2. 结论  本着可读性优先于性能的原则,面向人类编程优先于面向机器编程,应 ...

  8. FastReport.Net 常用功能总汇

    一.常用控件 文本框:输入文字或表达式 表格:设置表格的行列数,输入数字或表达式 子报表:放置子报表后,系统会自动增加一个页面,你可以在此页面上设计需要的报表.系统在打印处理时,先按主报表打印,当碰到 ...

  9. python字符串及其方法详解

    首先来一段字符串的基本操作 str1="my little pony" str2="friendship is magic" str3=str1+", ...

随机推荐

  1. Python高级语法-深浅拷贝-总结(4.2.1)

    @ 目录 1.说明 2.代码 关于作者 1.说明 任何可变数据类型都牵扯到深浅拷贝 但是元组,常数等,不可变数据类型,无论浅拷贝,深拷贝都是指向 不管如何嵌套,一旦牵扯到可变数据类型,都会有深浅区别 ...

  2. RabbitMq基本概念理解

    RabbitMQ的基本概念 RabbitMQ github项目地址 RabbitMQ 2007年发布,是一个在AMQP(高级消息队列协议)基础上完成的,可复用的企业消息系统,是当前最主流的 消息中间件 ...

  3. Core3.0类库项目引用Microsoft.AspNetCore

    前言 参考 https://www.cnblogs.com/puzi0315/p/12190989.html 步骤 修改Project.Sdk 添加OutputType <Project Sdk ...

  4. IIS放置的APP安装包在浏览器无法打开

    无法打开的提示   操作步骤 1.将APP安装包放置到指定的文件夹中. 2.在IIS中MIME中添加MIME类型 扩展名:.apk MIME类型:application/vnd.android.pac ...

  5. vs2012新特性

    VS2012的六大技术特点: 1.VS2012和VS2010相比,最大的新特性莫过于对Windows 8Metro开发的支持.Metro天生为云端而生,简洁.数字化.内容优于形式.强调交互的设计已经成 ...

  6. Weblogic命令执行漏洞(CVE-2018-2628)复现

    一.漏洞环境搭建 CVE-2018-2628影响的软件版本为: Weblogic 10.3.6.0 Weblogic 12.1.3.0 Weblogic 12.2.1.2 Weblogic 12.2. ...

  7. CentOS7 实战源码部署nginx网站服务器

    简介:实战演练nginx网站服务器的搭建 nginx 简介: Nginx是一款高性能的 HTTP 和反向代理服务器   Nginx的优点: 1.高并发量:根据官方给出的数据,能够支持高达 50,000 ...

  8. reactor模式前序:传统IO的WEB服务器设计

    先看一段经典的WEB JAVA服务器设计 JAVA代码为(伪代码) 1 ServerSocket serverSocket = ...; 2 serverSocket.bind(8899); 3 4 ...

  9. Java内存模型精讲

    1.JAVA 的并发模型 共享内存模型 在共享内存的并发模型里面,线程之间共享程序的公共状态,线程之间通过读写内存中公共状态来进行隐式通信 该内存指的是主内存,实际上是物理内存的一小部分 2.JAVA ...

  10. 论文阅读 Characterization of Multiple 3D LiDARs for Localization and Mapping using Normal Distributions Transform

    Abstract 在这个文章里, 我们细致的比较了10种不同的3D LiDAR传感器, 用了一般的 Normal Distributions Transform (NDT) 算法. 我们按以下几个任务 ...