莫烦Pytorch学习记录——关于搭建神经网络
1.神经网络黑盒并不黑
与其说神经网络是一种黑盒,不如说是将一种表示特征不断的转换位另外的一种表示特征。
(只不过随着网络层数的增加,人类没办法理解了,所以觉得实个黑盒hhh)
2. 为什么使用Pytorch
Pytorch是Torch在Python上的衍生,,而Torch是一个使用Lua语言的神经网络库,但是Lua流行度不高,所以
Pytorch一出世:
下面这些就都在用了
pytorch是动态图!
3.Numpy 和Torch的对比
# 从numpy到torch
torch.from_numpy()
# 从torch到numpy
torch_data.numpy()
4. 搭建网络中的代码理解:
# 这里就说名Net继承了从torch里来的nn.Mudle里的东西
# nets中很多的功能都包含在这个Module中
# __init__和forward是最重要的两个信息
Class Net(nn.Module):
def __init__(self, n_features, n_hidden, n_output): # 所以init里面是定义好这些层,定义定义定义!!!
super(Net, self).__init__() #把Net里初始化等的东西继承进来,官方步骤,必须这么做!
self.hidden = torch.nn.Linear(n_features, n_hidden) #接下来就是自己的内容了,这里就是一层的神经网络隐藏层了
self.predict = torch.nn.Linear(n_hidden, n_output)
def forward(self,x): # 真正搭网络是在forward里面进行的,这里的x就是真正的输入信息,
x = F.relu(self.hidden(x),)
x = self.predict
return x # 最终返回了predict的结果
第二种搭建网络的方法更简单,不用定义一个Class
直接用
net2 = torch.nn.Sequential(
#就是直接在这个括号里面垒神经层就好了,而不再需要用self的属性那样来
)