Pytorch框架下的深度学习----2

本文介绍了使用Python进行数据预处理,包括填充缺失值和one-hot编码,以及使用NumPy和PyTorch进行线性代数操作,如求和、点积、矩阵乘法和范数计算。同时展示了微积分中的导数、偏导和梯度计算方法。
摘要由CSDN通过智能技术生成
####################################数据预处理#################################
#读取数据集
import os
import pandas as pd
# os.makedirs(os.path.join('..','data'),exist_ok=True)#在上一级目录下创建data文件夹(../data),如果存在就自动跳过
# data_file = os.path.join('..','data','house_tiny.csv')#在../data下创建.csv文件,并把路径赋给data_file
# with open(data_file,'w')as f:#打开文件执行写操作
#     f.write('NumRooms,Alley,Price\n')#第一行是标题行,不会计数
#     f.write(',,127500\n')#由此开始为数据行
#     f.write('2,NA,106000\n')
#     f.write('4,NA,178100\n')
#     f.write('NA,NA,140000\n')
# data = pd.read_csv(data_file)#运用panda的read_csv()读取.csv文件
# inputs, outputs = data.iloc[:,0:2], data.iloc[:,2]#iloc索引,把数据分为两个部分inputs和outputs
# print(inputs)
# inputs = inputs.fillna(inputs.mean())
# inputs = pd.get_dummies(inputs,dummy_na=True)
# print(pd.get_dummies(inputs,dummy_na=True))
#
# x,y = torch.tensor(inputs.values,dtype=float),torch.tensor(outputs.values,dtype=int)
# print(x,y)


#######################################线性代数##########################################
# A = torch.tensor([[1,2,3]
#                   ,[4,5,6]
#                   ,[7,8,9]])
# A_sum_axis0 = A.sum(axis=0)#同一列求和,得到一个行向量
# A_sum_axis1 = A.sum(axis=1)#同一行求和,得到一个列向量
# print(A_sum_axis0,A_sum_axis1)
# print(A.sum(axis=1,keepdim=True))#不降维对同一行求和(只显示最终的相加结果)
# print(A.cumsum(axis=0))#逐行加,最后一行就是整列的和(把加的过程显示出来)
# #点积
# x = torch.tensor([1,2,3])
# y = torch.tensor([4,5,6])
# print(torch.dot(x,y))#直接使用点击函数torch.dot()
# print(torch.sum(x*y))#按位相乘再相加
# #torch.dot()只能处理一维对一维的内积
# z = torch.ones(3,3,dtype=int)#torch.ones()创建的元素默认是浮点型,进行.mm操作是要求数据类型相同
# # print(torch.dot(z,A))
# #print(np.dot(A,x))
# print(torch.mv(A,x))#torch.mv()可以处理矩阵向量的积(不要求数据类型一致)
# print(torch.mm(A,z))#+torch.mm()可以处理2维矩阵的乘法(要求数据类型一致)
#
# #范数
# #L1范数:所有元的绝对值的和
# x = torch.tensor([1.0,2,-3,4])
# L1_x = torch.abs(x).sum()
# #L2范数:所有元素的平方和的平方根.欧几里德距离(点到原点的距离)
# L2_x = torch.norm(x)
# print(L1_x)
# print(L2_x)

####################################微积分############################################
#导数和微分
from matplotlib_inline import backend_inline
from d2l import torch as d2l
#导数
def f(x):
    return 3 * x**2  - 4 * x
def numerical_lim(f,x,h):
    return (f(x+h) - f(x)) / h

h = 0.1
for i in range(5):
    print(f'h={h:.5f},numerical limt={numerical_lim(f,1,h):.5f}')
    h *= 0.1
#偏导
def f1(x,y):
    return x**2 + y**2 + x*y
def multi_lim(f,x,y,h,flag):
    if(flag == 0):
        return (f(x+h,y)-f(x,y))/h
    else:
        return (f(x,y+h)-f(x,y))/h
h = 0.1
for i in range(5):
    print(f'h={h:.5f},numerical limt_X={multi_lim(f1,1,1,h,0):.5f},numerical limt_Y={multi_lim(f1,1,1,h,1):.5f}')
    h *= 0.1
#梯度(各变量的偏导数组成的张量)
h = 0.1
for i in range(5):
    grad = torch.tensor([multi_lim(f1,i,1,h,0),multi_lim(f1,i,1,h,1)])
    print(grad)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值