下面进行全连接网络的学习,对于全连接网络的简单理解,可以认为是多个线性分类的组合,当直线不能完成复杂分类任务的时候,我们可以将非线性边缘分解为多个线性边缘的组合,推荐一个网站,可以直观的感受到多个线性分类器组合后的分类效果:
https://playground.tensorflow.org/
hidden layer中仅有一个 node的时候,相当于仅有一个线性分类器,所以最后的分类效果边界是直线:
当有两个node的时候,相当于两个线性分类器,进行组合,最后可以看到基本是两个线性边界
有3个node的时候:就可以正确分类的,似乎是比较符合我们的预期的
然后是pytorch代码的演示,
首先生成数据,我们也生成如上图一样的数据,中心在一起的两类:
import torch
import torch.nn as nn
import matplotlib.pyplot as plt
import numpy as np
from sklearn import datasets
n_pt=500
x,y=datasets.make_circles(n_pt,random_state=123,noise=0.1,fator=0.2)
def scatter_plot(x,y):
plt.scatter(x[y==0,0],x[y==1,1],10,label='0')
plt.scatter(x[y==1,0],x