机器学习笔记(十六)——线性神经网络
本博客仅用于个人学习,不用于传播教学,主要是记自己能够看得懂的笔记(
学习知识、资源和数据来自:机器学习算法基础-覃秉丰_哔哩哔哩_bilibili
本次要解决的问题和上次的一样,可见:机器学习笔记(十五)——神经网络单层感知器 - Lcy的瞎bb - 博客园 (cnblogs.com)
不同的是,我们所用的激活函数不一样了。上次用的是sign函数,这次我们用purelin函数:purelin(x)=x。
很简单,就改一改式子就行了。但是,记得把learning rate也改小,因为用purelin函数的话,w的值变化量更大,在0.1的learning rate下,直接破了python的inf。所以要改小。
Python代码:
import numpy as np import matplotlib.pyplot as plt x_data=np.array([[1,3,3],[1,4,3],[1,1,1],[1,0,2]]) #坐标 y_data=np.array([[1],[1],[-1],[-1]]) #标签 w=(np.random.random([3,1])-0.5)*2 #随机的-1到1的数 print(w) lr=0.01 #learning rate for i in range(515): y=np.dot(x_data,w) w_=lr*np.dot(x_data.T,y_data-y)#/float(x_data.shape[0]) w+=w_ print(w) z=-(w[0]+w[1]*x_data[:,1])/w[2] plt.plot(x_data[:,1],z,'k') x0=[3,4] y0=[3,3] x1=[1,0] y1=[1,2] plt.plot(x0,y0,'bo') plt.plot(x1,y1,'rx') plt.show()
得到结果:
[[0.28973629]
[0.44555926]
[0.89746408]]
[[-1.64676784]
[ 0.4428834 ]
[ 0.34886954]]