深度学习复习笔记(4)python基础——numpy,tensor,引用

# 引用包
import numpy

# 简写
import numpy as np

#把矩阵转换为张量
import torch

# 列表
list1 = [
        [1,2,3,4,5],
        [6,7,8,9,10],
        [11,12,13,14,15]
    ]
print(list1)

#把list1转换为矩阵
array1 = np.array(list1)
print(array1)

# 矩阵的操作
# 合并
array2 = np.array(list1)
print(array2)
# 竖合并
array3 = np.concatenate((array1, array2))       #后面加axis=0等效(默认是axis=0)
print(array3)
# 横合并
array4 = np.concatenate((array1, array2), axis=1)
print(array4)

矩阵维度:竖着为0维,横着为1维,立体方向为2维,以此类推。


# 切片(左闭右开)
print(list1[1:2])
print(array1[1:2])          #行切片
print(array1[1:3, 1:3])     #行列切片
print(array1[:,1:3])        #列切片
print(array1[:,:])          #不切

# 跳着切
idx = [1, 3]
print(array1[:, idx])       #跳着切矩阵1,3列

import torch        #引用张量
import numpy as np

list1 = [
        [1,2,3,4,5],
        [6,7,8,9,10],
        [11,12,13,14,15]
    ]
print(list1)

# 转换为张量 (目的是把矩阵放在张量网上,可以进行计算,求梯度)
tensor1 = torch.tensor(list1)
print(tensor1)

# 计算实例(梯度回传的实例(原理))
x = torch.tensor(3.0)
x.requires_grad_(True)      #表示x在计算时需要计算梯度

y= x**2
y.backward()                   #求y中所有参数的梯度

print(y)
print(x.grad)

y2 = x**2
y2.backward()

print(y2)
print(x.grad)           #这边输出为12,为什么不是6?因为张量网上计算x的梯度后会保留,前面计算过一次x的梯度为6,再计算一次为6+6=12.所以在第二次计算前要有清零操作:"x.grad = torch.tensor(0.0)"

#当x变成张量时很多事情做不了,如画图,存储
#把x从张量网上摘下(不再计算梯度)
x = x.detach()

# 创建张量

# 创建全为1的张量,10行4列
tensor2 = torch.ones((10,4))
print(tensor2)

# 创建全为0的张量,10行4列
tensor3 = torch.zeros((10,4))
print(tensor3)

#创建随机数的张量(正态分布)
tensor4 = torch.normal(0, 0.01, (10,4))     #normal(平均数,标准差,张量规格)
print(tensor4)
# 3维张量
tensor5 = torch.normal(10, 1, (2,10,4))
print(tensor5)

# 张量求和
# 张量里所有值的和
sum1 = torch.sum(tensor2)
print(sum1)

# 分别竖加
sum2 = torch.sum(tensor2, dim=0)
print(sum2)

# 横加
sum3 = torch.sum(tensor2, dim=1)
print(sum3)

# 保持形状横加
sum4 = torch.sum(tensor2, dim=1, keepdim=True)
print(sum4)

# 报错callable表示多打了小括号
# 输出张量规格
print(tensor2.shape)
# 引用其他代码文件
from mytensor import tensor2       #会把mytensor中所有代码运行一遍     引入张量
from myclass import superman       #会把myclass中所有代码运行一遍     引入类

print(tensor2)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值