版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/evolone/article/details/79109565
今天练习写python代码时,遇到一个有趣的写法:
def relu_fun(x):
x[x<0]=0
return x
结合上下文发现x是矩阵,猜测函数功能是根据x的值若小于0,则对应位的x就置为0,否则直接返回原来x的值。
想验证函数功能是否与自己的猜测相同,于是就自己去尝试添加激励。
x = [[-2, -1, 2], [1, 2 ,-1]]
print(relu_fun(x))
然后就报错!!
TypeError: unorderable types: list() < int()
好吧,类型错误。
这个错误对应的代码是:x<0
也就是说X在这里是list类型的。
去查阅资料后,发现自己错认为x = [[-2, -1, 2], [1, 2 ,-1]] 就是矩阵类型,其实不是,这只是list类型。
继续找矩阵类型,废了一些时间却没有找到。
偶然在网页中见到一个函数np.mat(),好奇之下去探究,发现这个函数就能将list转化为矩阵。
于是修改激励代码如下:
x = [[-2, -1, 2], [1, 2 ,-1]] # list类型
x = np.mat(x) # 将list类型的x转化为矩阵x
print(relu_fun(x))
这次输出就对了。
[[0 0 2]
[1 2 0]]