动手学习深度学习中遇到的一些函数

学习笔记

1. nn.init.normal_

torch.nn.init.normal_(tensor, mean=0.0, std=1.0)

参数:

tensor-一个n维torch.Tensor

mean-正态分布的平均值

std-正态分布的标准差

使用从正态分布 N(mean,std2) 中提取的值填充输入张量。

例子

w = torch.empty(3, 5)
nn.init.normal_(w)

在这里插入图片描述

2.torch.zeros_like()、torch.ones_like()

torch.zeros_like(tensor)torch.ones_like(tensor)
参数:

tensor: 一个n维torch.Tensor

根据给定的张量,生成与其形状相同的全为0或者全为1的张量

例子

input = torch.rand(2, 3)
input
torch.zeros_like(input)

在这里插入图片描述

3.np…power()

np.power(x, y)
参数:

  1. x,y为单个数:求x的y次幂
np.power(2,3) #8 2的3次幂
  1. x为单个数,y为列表:求x的y[:]次幂
np.power(2, [1, 2, 3]) #array([2, 4, 8], dtype=int32) 2的一次幂,二次幂,三次幂
  1. x为列表,y为单个数:求x[:]的y次幂
np.power([1, 2, 3], 2) #array([1, 4, 9], dtype=int32) 1的2次幂,2的二次幂,3的二次幂
  1. x为列表,y为列表,x的行数和y的行数相同:x元素对应的y次幂
np.power([1, 2, 3],[2, 2, 2]) #array([1, 4, 9], dtype=int32) 1的2次幂,2的二次幂,3的二次幂
  1. x为列表,y为列表,x的行数等于y的列数:每一行求对应列的次幂成为一行
np.power([1, 2, 3],[[1],[2],[3]])
 #array([[ 1,  2,  3],
 #      [ 1,  4,  9],
 #     [ 1,  8, 27]], dtype=int32)
 #  [1, 2, 3]的1次幂 [1, 2, 3]的2次幂 [1, 2, 3]的3次幂 

4.math.gamma()

math.gamma(x)
参数:

x 为一个正整数

返回(x-1)的阶乘
例子:

math.gamma(2) #1.0
math.gamma(4) #6.0

5.np.dot()

np.dot(x,y)
参数:

  1. x和y都是向量:做内积
a = np.array([1, 2, 3, 4])
b = np.array([4, 3, 2, 1])
c = np.dot(a, b)
print(a.shape) #(4,)
print(b.shape) #(4,)
print(c) #20 1x4+2x3+3x2+4x1=20
print(c.shape) #()
  1. x为矩阵,y为向量:y会被看做一维矩阵,结果为一维向量
a = np.random.randint(0,10, size = (5,4))
b = np.array([1, 2, 3, 4])
c = np.dot(a, b)
print(b) #[1 2 3 4]
print(c) #[50 47 34 25 63]
print(a.shape) #(5, 4)
print(b.shape) #(4,)
print(c.shape) #(5,)
  1. x为矩阵,y为矩阵:做矩阵乘法运算
a = np.random.randint(0,10, size = (5,4))
b = np.random.randint(0,10, size = (4,3))
c = np.dot(a, b)
print(a.shape) #(5, 4)
print(b.shape) #(4, 3)
print(c) 
#[[ 29  34  53]
# [ 52 122  86]
# [ 39  53  75]
# [ 42  82  64]
# [ 39  91  49]]
print(c.shape) #(5, 3)

6.ilco[] (pandas库)

ilco[a, b]
iloc[]函数,属于pandas库,全称为index location,即对数据进行位置索引,从而在数据表中提取出相应的数据。

参数:
a是行索引,b是列索引
在这里插入图片描述

  1. a、b为单个数字:取a行b列的数据
print(train_data.iloc[1, 3]) #80.0
  1. a为列表,b为数字:取b列a列表对应的行
print(train_data.iloc[0:3, 3])

在这里插入图片描述
3. a为列表,b为列表:取a,b对应的数字组成下标

print(train_data.iloc[0:3, [1, 2, 3]])

在这里插入图片描述

7.fillna()函数

df.fillna(a,[inplace=False])
用指定的值去填充dataframe中的缺失值
参数

a表示的是常数或字典
inplace为可选参数,默认为False,表示不修改原对象,若指定inplace=True,则直接修改原对象

from numpy import nan as NaN
df1 = pd.DataFrame([[1, 2, 3],[NaN, NaN, 2],
                   [NaN, NaN, NaN],[3, 4, NaN]])
df1

在这里插入图片描述

  1. 若a为常数,则用常数a填充缺失值
df1.fillna(10) # 用常数填充

在这里插入图片描述

  1. 若a为字典,则表示第key列的缺失值用key对应的value值填充
df1.fillna({0:10, 1:20, 2:30}) #用字典填充

在这里插入图片描述

8.pd.get_dummies()

pandas.get_dummies(data, prefix=None, prefix_sep='_', dummy_na=False, columns=None, sparse=False, drop_first=False, dtype=None)
参数

prefix:str, list of str, 或 dict of str, 默认为 None
用于追加DataFrame列名称的字符串。
 
prefix_sep:str, 默认为 ‘_’
如果附加前缀,则使用分隔符/分隔符。或者像这样传递列表或字典prefix。
 
dummy_na:bool, 默认为 False
如果忽略False NaN。
 
columns:list-like, 默认为 None
要编码的DataFrame中的列名。如果columns为None,则所有具有的列object或者categorydtype将被转换。
 
sparse:bool, 默认为 False
dummy-encoded列是否应由a支持SparseArray(True)或常规NumPy数组(False)。
 
drop_first:bool, 默认为 False
是否通过删除第一个级别从k个分类级别中获取k-1个虚拟对象。

例如:

data = pd.DataFrame({"学号":[1001, 1002, 1003, 1004],
                    "性别":["男", "女", "女", "男"],
                    "学历":["本科", "学硕", "专硕", "本科"]})
data

在这里插入图片描述

pd.get_dummies(data)

在这里插入图片描述

pd.get_dummies(data, prefix="A")

在这里插入图片描述

pd.get_dummies(data, prefix=["A", "B"], prefix_sep="&")

在这里插入图片描述

9.torch.clamp()

torch.clamp(input, min, max, out=None)
将输入input张量每个元素的值压缩到区间 [min,max],并返回结果到一个新张量。
只有张量中数值大于max或者小于min时才会被替换
参数

 input:输入张量;

 min:限制范围下限;

 max:限制范围上限;

 out:输出张量。 

例如:

a=torch.randint(low=0,high=10,size=(10,1))
print(a)
b=torch.clamp(a,3,9)
print(b)

在这里插入图片描述

10.image.permute()

permute(dims)
将tensor的维度转换
参数

参数形式:(整数,整数,整数)

例如:

import numpy as np
a=np.array([[[1,2,3],[4,5,6]]])
unpermuted=torch.tensor(a)
print(unpermuted.size())  #  ——>  torch.Size([1, 2, 3])

permuted=unpermuted.permute(2,0,1)
print(permuted.size())     #  ——>  torch.Size([3, 1, 2])

如果一个图像img的size是(25, 25, 3), 可以用img.permute(2, 0, 1)得到(3, 25, 25)

  • 7
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值