IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 作业一:深度学习和pytoch基础 -> 正文阅读

[人工智能]作业一:深度学习和pytoch基础

一、深度学习名词概述:

1.人工智能:使一部机器像人一样进行感知、认知、决策、执行的人工程序或系统,其包括计算智能(具备快速计算和记忆存储)、感知智能(能做到类似于人的视听)、认知智能(能像人一样思考,有意识)三个层面

2.专家系统(知识工程):根据专家定义的知识和经验,进行推理和判断,从而模拟人类专家的决策过程来解决问题。流程为:专家首先根据需求和知识制定出适合规则,然后机器读取内容并根据规则判断分类。

3.机器学习:是在专家系统中由专家制定修改的部分改为机器根据结果反馈自动训练,是从数据中提取知识的系统。相对于专家系统,机器学习普适性更强,准确度更高。其过程为模型(问题建模,确定假设空间)->策略(确定目标函数)->算法(求解模型参数)

4.深度学习:应用了多层深度神经网络的机器学习。

二、pytorch基础

1.数据操作

(1)数组:标量[1.0]、向量(torch一般指的是行向量,列向量可有矩阵表示)[1,2,3]、矩阵[[1,2],[3,4]]、三维数组(RGB图片)、四维数组(一批RGB图片)、五维(一个视频)

(2)数组访问:[1,2],[1,:][:,1],[1:3,1:],[::3,::2]

(3)张量表示一个数值组成的数组,可有多个维度

(4)张量定义与修改

import torch
x = torch.arange(12)#顺序生成一维数组
x.shape#数组形状
x.numel()#数组元素个数
x.reshape(3,4)#修改数组形状
torch.ones((2,3,4))#生成元素全为1的数组
torch.zeros(2,3,4)#生成元素全为0的数组
torch.tensor([[2,1,3,4],[1,2,3,4],[4,3,2,1]])#自定义数组

(5)运算

x = torch.tensor([1.0,2,4,8])
y = torch.tensor([2,2,2,2])
x+y,x-y,x*y,x/y,x**y#简单运算
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]])
torch.cat((X,Y),dim=0),torch.cat((X,Y),dim=1)#两个张量特定维度上拼接
X==Y#张量元素是否相等
X.sum()#元素求和
a = torch.arange(3).reshape((3,1))
b = torch.arange(2).reshape((1,2))
a+b#广播机制,维度相同可复制后相加

(6) 部分操作会改变地址和原地操作

before = id(Y)
Y = Y+X
id(Y)==before#地址改变
Z = torch.zeros_like(Y)#生成一个和给定数组相同的数组
print('id(Z)',id(Z))
Z[:] = X+Y
print('id(Z)',id(Z))#地址不变
before = id(X)
X += Y
id(X)==before#地址不变

(7) numpy和tensor转换以及取值

A = X.numpy()#tensor->numpy
B = torch.tensor(A)#numpy->tensor
type(A),type(B)
a = torch.tensor([3.5])
a,a.item(),float(a),int(a)#类型转化

2.数据预处理

(1)创建人工数据集,存储在csv文件

import os
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,Price\n')#标签
    f.write('NA,Pave,127500\n')#数据
    f.write('2,NA,106000\n')
    f.write('4,NA,178100\n')
    f.write('NA,NA,140000\n')

(2)读数据

data = pd.read_csv(data_file)

(3)处理缺失数据

inputs,outputs = data.iloc[:,0:2],data.iloc[:,2]#取值
inputs = inputs.fillna(inputs.mean())#平均值填充缺失数据
inputs = pd.get_dummies(inputs,dummy_na=True)#类别法,一类一个表示

?(4)数据转换为张量

x,y = torch.tensor(inputs.values),torch.tensor(outputs.values)

3.线性代数?

(1)矩阵性质

A = torch.arange(20).reshape(5,4)
A.T#转置
B = torch.tensor([[1,2,3],[2,0,4],[3,4,5]])
B == B.T#对称矩阵
A = torch.arange(20,dtype=torch.float32).reshape(5,4)
B = A.clone()#复制
A+B,A*B#矩阵简单运算
a = 2
X = torch.arange(24).reshape(2,3,4)
a+X,(a*X).shape#倍乘
x = torch.arange(4,dtype=torch.float32)
x,x.sum()#矩阵求和
A.sum(axis=0)#按轴求和
a.sum(axis=1,keepdim=True).shape#不降维求和
A.sum(axis=[0,1])
A.mean()#均值
A.mean(axis=0)#按轴均值
A.cumsum(axis=0)#按轴累加求和
y = torch.ones(4,dtype=torch.float32)
x,y,torch.dot(x,y)#点积
A.shape,x.shape,torch.mv(A,x)#矩阵向量积
B=torch.ones(4,3)
torch.mm(A,B)#矩阵乘法
u = torch.tensor([3.0,-4.0])
torch.norm(u)#L2范数---向量元素平方和的平方根
torch.abs(u).sum()#L1范数---绝对值求和
torch.norm(torch.ones((4,9)))#矩阵F范数---矩阵元素平方和的平方根

(2)矩阵求导

标量导数

?

亚导数

梯度

(3)正向传播与反向传播

?

?

(4)pytorch中的自动求导?

?

x = torch.arange(4.0)
x.requires_grad_(True)#x需要求导
y = 2*torch.dot(x,x)
y.backward()#求导存于x.grad
x.grad
x.grad.zero_()#清空
x.grad.zero_()
y = x*x
u = y.detach()
z = u*x
z.sum().backward()
x.grad == u
控制流
def f(a):
  b = a*2
  while(b.norm()<1000):
    b = b*2
  if b.sum()>0:
    c = b
  else:
    c = 100*b
  return c

a = torch.randn(size=(),requires_grad=True)
d = f(a)
d.backward()
a.grad == d/a

三、感悟

了解到深度学习就是应用多层神经网络的机器学习,对于线代的矩阵求导理解不透彻,张量拼接过程难以理解,detach作用不清晰。

  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2021-09-06 11:07:54  更:2021-09-06 11:11:28 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/27 16:36:04-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码