1.各种激励函数
首先介绍一下import torch.nn.functional as F
,激励函数在里面找,后几章会有import torch.nn as nn
,这个里面也存在的激励函数,那么他们有什么区别呢?
F.conv2d()类似于python的一个函数,而nn.Conv2d是一个类,他是通过而nn.Conv2d的forward()函数实现是用F.conv2d()实现的,下面列下了代码,可以看出是在class类里面有一个forward方法,返回的是F.conv2d(),证实了是调用的作法。
import torch.nn.functional as F
class Conv2d(_ConvNd):
def __init__(self, in_channels, out_channels, kernel_size, stride=1,
padding=0, dilation=1, groups=1, bias=True):
kernel_size = _pair(kernel_size)
stride = _pair(stride)
padding = _pair(padding)
dilation = _pair(dilation)
super(Conv2d, self).__init__(
in_channels, out_channels, kernel_size, stride, padding, dilation,
False, _pair(0), groups, bias)
def forward(self, input):
return F.conv2d(input, self.weight, self.bias, self.stride,
self.padding, self.dilation, self.groups)
总而言之,如果有Variable
的话就用nn
,如果没有直接用nn.functional
————————————————————————————————————————————————
import torch
from torch.autograd import Variable
import torch.nn.functional as F
import matplotlib.pyplot as plt
x=torch.linspace(-5,5,200) #平分[-1,5),分为200份
x=Variable(x)
x_np=x.data.numpy()
#调用各种API
y_relu=F.relu(x).data.numpy()
y_sigmoid=F.sigmoid(x).data.numpy()
y_tanh=F.tanh(x).data.numpy()
y_softplus=F.softplus(x).data.numpy()
#y_softmax=F.softmax(x,dim=0).data.numpy() 不能直接显示,适用于二分类
plt.figure(1,figsize=(8,6))
plt.subplot(221)
plt.plot(x_np, y_relu, c='red', label='relu')
plt.ylim((-1, 5))
plt.legend(loc='best')
plt.subplot(222)
plt.plot(x_np, y_sigmoid, c='red', label='sigmoid')
plt.ylim((-0.2, 1.2))
plt.legend(loc='best')
plt.subplot(223)
plt.plot(x_np, y_tanh, c='red', label='tanh')
plt.ylim((-1.2, 1.2))
plt.legend(loc='best')
plt.subplot(224)
plt.plot(x_np, y_softplus, c='red', label='softplus')
plt.ylim((-0.2, 6))
plt.legend(loc='best')
plt.show()
画图有一个注意点,那就是一定要是numpy
的形式,tensor
是画不了的
————————————————————————————————————————————————
我是一名机器学习的初学者,是万千小白中努力学习中的一员