机器学习笔记(十六)——线性神经网络

本博客仅用于个人学习,不用于传播教学,主要是记自己能够看得懂的笔记(

学习知识、资源和数据来自:机器学习算法基础-覃秉丰_哔哩哔哩_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]]

posted @ 2021-08-02 11:42  Lcy的瞎bb  阅读(102)  评论(0编辑  收藏  举报