pythonpytorch 部分常用函数

it2023-01-12  69

 

 

目录

 

assert

update()

len()

range()

torchvision.transforms.Compose(transforms)

torchvision.transforms.ToTensor()

Python split()方法

Python 函数 定义 调用 参数传递 匿名函数 return 语句 变量作用域 全局变量和局部变量

定义

函数调用

参数

匿名函数

pytorch常见运算

1 矩阵与标量

2 哈达玛积

3 矩阵乘法 

4幂与开方 

5对数运算 

6近似值运算

7剪裁运算  


 


assert

 http://c.biancheng.net/view/2219.html

assert又称断言语句,可以看做是功能缩小版的 if 语句,它用于判断某个表达式的值,如果值为真,则程序可以继续往下执行;反之,Python 解释器会报 AssertionError 错误。语法格式:

if 表达式==True: 程序继续执行 else: 程序报 AssertionError 错误

明明 assert 会令程序崩溃,为什么还要使用它呢?这是因为,与其让程序在晚些时候崩溃,不如在错误条件出现时,就直接让程序崩溃,这有利于我们对程序排错,提高程序的健壮性。因此,assert 语句通常用于检查用户的输入是否符合规定,还经常用作程序初期测试和调试过程中的辅助工具。eg.

mathmark = int(input()) #断言数学考试分数是否位于正常范围内 assert 0 <= mathmark <= 100 #只有当 mathmark 位于 [0,100]范围内,程序才会继续执行 print("数学考试分数为:",mathmark)

update()

https://www.runoob.com/python/att-dictionary-update.html

Python 字典(Dictionary) update() 函数把字典dict2的键/值对更新到dict里。语法格式:

dict.update(dict2)

dict2 -- 添加到指定字典dict里的字典。该方法没有任何返回值。

用 update 更新字典 a,会有两种情况:

 (1)有相同的键时:会使用最新的字典 b 中 该 key 对应的 value 值。 (2)有新的键时:会直接把字典 b 中的 key、value 加入到 a 中   eg. a = {1: 2, 2: 2} b = {1: 1, 3: 3} a.update(b) print(a) #输出{1: 1, 2: 2, 3: 3}

len()

https://zhuanlan.zhihu.com/p/59403281 作用:返回字符串、列表、字典、元组等长度 语法:

len(str)

参数: str:要计算的字符串、列表、字典、元组等 返回值:字符串、列表、字典、元组等元素的长度,eg.

#计算字符串长度 s = "hello word" print(len(s))#10 #计算字典的键值对数 dict = {'num':777,'name':"anne"} print(len(dict))#2 #计算元组中元素个数 t = ('G','o','o','d') print(len(t))#4 #计算列表长度 str= ['h','e','l','l','o'] print(len(str))#5

range()

range()是python内置函数它能返回一系列连续增加的整数,它的工作方式类似于分片,可以生成一个列表对象。

range函数大多数时常出现在for循环中,在for循环中可做为索引使用。其实它也可以出现在任何需要整数列表的环境中,

在python 3.0中range函数是一个迭代器。range()函数内只有一个参数,则表示会产生从0开始计数的整数列表

语法

range(start, stop[, step])

参数说明:

start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于range(0, 5);stop: 计数到 stop 结束,但不包括 stop。例如:range(0, 5) 是[0, 1, 2, 3, 4]没有5step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1) >>>range(10) # 从 0 开始到 10 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(1, 11) # 从 1 开始到 11 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> range(0, 30, 5) # 步长为 5 [0, 5, 10, 15, 20, 25] >>> range(0, 10, 3) # 步长为 3 [0, 3, 6, 9] >>> range(0, -10, -1) # 负数 [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] >>> range(0) [] >>> range(1, 0) []

torchvision.transforms.Compose(transforms)

https://pytorch-cn.readthedocs.io/zh/latest/torchvision/torchvision-transform/

将多个transform组合起来使用。transforms transform构成的列表。eg.https://www.programcreek.com/python/example/104832/torchvision.transforms.Compose

def load_data(root_path, dir, batch_size, phase): transform_dict = { 'src': transforms.Compose( [transforms.RandomResizedCrop(224), transforms.RandomHorizontalFlip(), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), ]), 'tar': transforms.Compose( [transforms.Resize(224), transforms.ToTensor(), transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]), ])} data = datasets.ImageFolder(root=root_path + dir, transform=transform_dict[phase]) data_loader = torch.utils.data.DataLoader(data, batch_size=batch_size, shuffle=True, drop_last=False, num_workers=4) return data_loader

src集合了四种操作   tar 集合了三种操作

torchvision.transforms.ToTensor()

PIL或者numpy转换成Tensor

Python split()方法

https://www.runoob.com/python/att-string-split.html

Python split() 通过指定分隔符对字符串进行切片,如果参数 num 有指定值,则分隔 num+1 个子字符串 ,语法

str.split(str="", num=string.count(str))

参数说明:

str -- 分隔符,默认为所有的空字符,包括空格、换行(\n)、制表符(\t)等。num -- 分割次数。默认为 -1, 即分隔所有。 str = "Line1-abcdef \nLine2-abc \nLine4-abcd"; print(str.split( )); # 以空格为分隔符,包含 \n print(str.split(' ', 1 )); # 以空格为分隔符,分隔成两个 #['Line1-abcdef', 'Line2-abc', 'Line4-abcd'] #['Line1-abcdef', '\nLine2-abc \nLine4-abcd'] #以 # 号为分隔符,指定第二个参数为 1,返回两个参数列表。 txt = "Google#Runoob#Taobao#Facebook" x = txt.split("#", 1)# 第二个参数为 1,返回两个参数列表 print(x) #['Google', 'Runoob#Taobao#Facebook']

Python 函数 定义 调用 参数传递 匿名函数 return 语句 变量作用域 全局变量和局部变量

https://www.runoob.com/python/python-functions.html

定义

函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。函数内容以冒号起始,并且缩进。return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。语法  def functionname( parameters ): "函数_文档字符串" function_suite return [expression]

函数调用

使用

functionname( parameters )

参数

python 中一切都是对象,严格意义我们不能说值传递还是引用传递,我们应该说传不可变对象和传可变对象。

python 函数的参数传递:

不可变类型:类似 c++ 的值传递,如 整数、字符串、元组。如fun(a),传递的只是a的值,没有影响a对象本身。比如在 fun(a)内部修改 a 的值,只是修改另一个复制的对象,不会影响 a 本身。

可变类型:类似 c++ 的引用传递,如 列表,字典。如 fun(la),则是将 la 真正的传过去,修改后fun外部的la也会受影响

以下是调用函数时可使用的正式参数类型:

必备参数关键字参数默认参数不定长参数

必备参数

必备参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

调用printme()函数,你必须传入一个参数,不然会出现语法错误:

关键字参数

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。

使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

默认参数

调用函数时,默认参数的值如果没有传入,则被认为是默认值

不定长参数

你可能需要一个函数能处理比当初声明时更多的参数。加了星号(*)的变量名会存放所有未命名的变量参数

#有时间再写

匿名函数

python 使用 lambda 来创建匿名函数。

lambda只是一个表达式,函数体比def简单很多。lambda的主体是一个表达式,而不是一个代码块。仅仅能在lambda表达式中封装有限的逻辑进去。lambda函数拥有自己的命名空间,且不能访问自有参数列表之外或全局命名空间里的参数。虽然lambda函数看起来只能写一行,却不等同于C或C++的内联函数,后者的目的是调用小函数时不占用栈内存从而增加运行效率。

语法

lambda [arg1 [,arg2,.....argn]]:expression

eg.

add = lambda x,y:x+y print(add(3,4))#7

pytorch常见运算

1 矩阵与标量

2 哈达玛积

   torch.mul()是*;torch.div()其实就是/;torch.add就是+;torch.sub()就是-。

3 矩阵乘法 

 torch.mm();torch.matmul();@

4幂与开方 

幂运算 a**n ,torch.pow(a, n); 开方运算可以用torch.sqrt(),当然也可以用a**(0.5)

5对数运算 

自然对数 torch.log(a) 

 torch.log2(a) ;

torch.log10(a)

6近似值运算

 .ceil() 向上取整; .floor()向下取整; .trunc()取整数; .frac()取小数; .round()四舍五入

7剪裁运算  

a.clamp(min,max)

最新回复(0)