栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

深度学习基础

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

深度学习基础

N维数组 N 维数组是机器学和神经网络的主要数据结构

Torch常用函数
# 导入torch
import torch
# 定义一个张量
x torch.arange(12)
print(x)
# 查看形状
print(x.shape)
# 查看张量的长度
print(len(x))
# 元素的总数
print(x.numel())
# 改变张量的形状
x x.reshape(3,4)
print(x)
# 创建元素全为0或1的矩阵
zeros torch.zeros((2,3,4))
print(zeros)
ones torch.ones((2,3,4))
print(ones)
# 创建特定元素的张量
tensor torch.tensor([[2,1,4,3],[1,2,3,4],[4,3,2,1]])
print(tensor)
# 常见的数学运算 - * / ** 都可以按元素运算
x torch.tensor([1.0,2,4,8],dtype torch.float32) # 必须同种类型的元素才能进行运算
y torch.tensor([2,2,2,2],dtype torch.float32)
print(x y)
print(x - y)
print(x * y)
print(x / y)
print(x ** y)
# 按元素方式进行指数计算
print(torch.exp(x))
# 将多个张量连接在一起
x torch.arange(12,dtype torch.float32).reshape((3,4))
y torch.tensor([[2.0,1,4,3],[1,2,3,4],[4,3,2,1]])
print(torch.cat((x,y),dim 0))
print(torch.cat((x,y),dim 1))
# 通过逻辑运算符构建二元张量
print(x y)
# 对张量中的所有元素进行求和 会产生一个只有一个元素的张量
print(x.sum())
# 指定求和汇总张量的轴
A torch.arange(20*2).reshape(2,5,4).float()
print( )
A_sum_axis0 A.sum(dim 0)
print(A_sum_axis0,A_sum_axis0.shape)
print( )
A_sum_axis1 A.sum(dim 1)
print(A_sum_axis1,A_sum_axis1.shape)
print( )
A_sum_axis01 A.sum(dim [0,1])
print(A_sum_axis01,A_sum_axis01.shape)
# 可以保持总轴数不变 方便广播 广播的注意事项在后面提到
print( )
sum_A A.sum(dim 1,keepdim True)
print(sum_A)
print(A / sum_A)
# 某个轴计算A元素的累积总和
print(A.cumsum(dim 0))
# 与求和相关的量是 平均值 mean或average 
# 广播机制 当张量的维数相同时 即使对应的维度的大小不一致 也可以进行四则运算
# 对于a 会自动复制成 3 2 大小的张量 对于b 会自动复制成 3,2 大小的张量
# 对于标量与张量的运算 标量可以直接广播成张量 后面有个例子
a torch.arange(3).reshape(3,1)
b torch.arange(2).reshape(1,2)
print(a b)
# 元素的访问 可以用[-1]访问最后一个元素 用[1:3]选择第二个和第三个元素
print(x[-1])
print(x[1:3])
# 元素的写入
x[1,2] 9
print(x)
# 多个元素赋值相同
x[0:2,:] 12
print(x)
# 运行一些操作会导致内存重新分配
before id(y) # id()返回y的唯一标识号 相当于指针一样
y y x # 重新赋值导致创建新的内存区域
print(id(y) before)
# 执行原地操作 [:]
z torch.zeros_like(y)
print( id(z): ,id(z))
z[:] x y # 在z原本的内存区域上进行修改
print( id(z): ,id(z))
# 执行原地操作的另一种方法 复合赋值运算符
before id(x)
print(id(x) before)
# 转换numpy张量
a x.numpy()
b torch.tensor(a)
print(type(a),type(b))
# 将大小为1的张量转换为Python标量
a torch.tensor([3.5])
print(a,a.item(),float(a),int(a))
# 矩阵的转置
A torch.arange(20).reshape(5,4)
print(A.T)
# 复制一个矩阵的副本 重新分配内存
A torch.arange(20,dtype torch.float32).reshape(5,4)
B A.clone()
print(id(A) id(B)) # false
# 两个矩阵的按元素乘法称为 哈达玛积
print(A * B)
X torch.arange(24).reshape(2,3,4)
print(a X) # 这里用了广播机制
print((a * X).shape)
# 向量的点积 -- 一个数的张量
x torch.tensor([0,1,2,3],dtype torch.float32)
y torch.tensor([1,1,1,1],dtype torch.float32)
print(torch.dot(x,y)) # or x.dot(y)
# 我们可以通过执行元素乘法 然后求和来表示两个向量的点积
print(torch.sum(x * y))
# 矩阵向量积Ax是一个长度为m的列向量
A torch.arange(20).reshape([5,4])
x torch.tensor([0,1,2,3])
print(torch.mv(A,x)) #mv指的是matrix 和 vector
# 矩阵-矩阵乘法
A A.float()
B torch.ones(4,3)
print(torch.mm(A,B))
# 向量的L2范数
u torch.tensor([3.0,-4.0])
print(torch.norm(u))
# L1范数
print(torch.abs(u).sum())
# 矩阵的F范数
print(torch.norm(torch.ones((4,9))))
# 数据预处理
# 创建一个人工数据集 并存储在csv 逗号分隔值 文件
import os
# 用pandas读取csv文件
import pandas as pd
import torch
os.makedirs(os.path.join( .. , data ),exist_ok True) # ..表示上一级目录
data_file os.path.join( .. , data , house_tiny.csv )
with open(data_file, w ) as f:
 f.write( NumRooms,Alley,Pricen ) # 列名
 f.write( NA,Pave,127500n ) # 每行表示一个数据样本
 f.write( 2,NA,106000n )
 f.write( 4,NA,178100n )
 f.write( NA,NA,140000n )
data pd.read_csv(data_file)
print(data)
# 处理缺失的数据 插值和删除 这里将考虑插值
inputs, outputs data.iloc[:,0:2], data.iloc[:,2]
print(type(inputs))
inputs inputs.fillna(inputs.mean()) # 对于数字的列 用平均来填充
print(inputs)
# 对于inputs中的类别值或离散值 我们将“NaN”视作一个类别.增加一列表示NaN
inputs pd.get_dummies(inputs,dummy_na True)
print(inputs)
# 对于inputs和outputs中的所有条目都是数值类型 它们可以转换为张量格式
x,y torch.tensor(inputs.values), torch.tensor(outputs.values)
print(x,y)
线性代数 矩阵、向量、标量之间的求导
向量的链式法则


1、线性回归 2、Softmax回归 3、多层感知机 4、模型选择 5、过拟合、欠拟合 6、权重衰退 7、Dropout 8、数值稳定性 9、模型初始化和激活函数
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/267975.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号