一名柏柏尔人带领骆驼队穿越撒哈拉沙漠,摄于摩洛哥。

python用法

map()函数

map 的作用是依次将可迭代对象里的元素传给 map 中的函数,返回一个迭代器。

一个参数的情况

1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 定义一个函数
def square(x):
return x**2

# 序列
nums = [1, 2, 3, 4, 5]

# 对nums序列每个数求平方,返回迭代器
nums_squared = map(square, nums)

# 输出结果
for num in nums_squared:
print(num)

输出结果:

1
2
3
4
5
1
4
9
16
25

当然我们也可以将上面例子中的 square 函数用 lambda 代码,例子如下:

1
2
3
4
5
6
7
nums = [1, 2, 3, 4, 5] 

nums_squared = map(lambda x: x*x, nums)

for num in nums_squared:
print(num)

多个参数情况

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# 定义一个函数
# 该函数必须采用两个参数,因为有两个可迭代对象传递给map()
def multiply(x, y):
return x * y

# 序列1
nums1 = [1, 2, 3, 4, 5]
# 序列2
nums2 = [6, 7, 8, 9, 10]

# 每次从nums1和nums2中取值
mult = map(multiply, nums1, nums2)

for num in mult:
print(num)

lambda 表达式

在这里链接一篇csdn文章,可以点击文章学习。

如果精简一点总结 lambda 表达式用法,可以使用举例子的方式看一下:

1
2
3
# ===========匿名函数写法:===========
# 2、两数相加,lambda 写法
reduce(lambda x, y: x + y, [1, 2, 3, 4, 5])

这里提到了 reduce 方法,意思是对参数列表的元素进行迭代送入定义好的函数中。在本例子中将 [1,2] 送入 lambda 中,随后输入 [3,3] 等等。

torch 有意思的函数

permute()函数

将 Tensor 维度换位。

1
2
3
4
5
6
7
8
9
10
11
12
13
14

>>> import torch
>>> x = torch.randn(3,255,255)
>>> x.size()
torch.Size([3, 255, 255])
>>> x.permute(2,0,1).size()
torch.Size([255, 3, 255])
# 观察 x.permute() 是否改变 x
>>> y = x.permute(2,0,1)
# 证明并不改变
>>> x.size()
torch.Size([3, 255, 255])
>>> y.size()
torch.Size([255, 3, 255])

区分两种乘法

@ 表示常规的数学上定义的矩阵相乘;
* 表示两个矩阵对应位置处的两个元素相乘。

torch.outer() 用于实现两个 Tensor 的内积,即 outer(a,b)= a^T *b (其中 a^T 表示 a 的转置).