深度学习前馈神经网络

深度学习前馈神经网络

河北师范大学2018级人工智能方向课后作业总结


任务要求

根据课上所学Rosenblatt感知器模型结构和算法流程,自己用代码实现。
设计实验(包括生成数据集、设计收敛衡量指标,如MSE),验证其在线性可分二分类问题上的性能,并作可视化展示。

参照代码已经在2018级钉钉群内分享,根据课上讲解要求有选择地参考。鼓励创新的思路和设计。

注意参考代码有设计上的bug,需要排除掉之后,才能有好的效果。所改之处要注释。

要求:

原创思路务必注明,解释清晰。

原创代码务必多做注释。

参考代码不要做任何注释。

未达成验证或者展示目标,或者没有任何创新点,不要作答。

代码内容

1.更改后

代码如下(示例):

import numpy as np
from matplotlib import pyplot as plt
D = np.random.random((10,2))
D2 = np.zeros((10,3))  #创建一个新的全0矩阵,比D要多一列,
for i in range(len(D)):
    D2[i] = np.append(D[i],[1])
D1 = np.array([[0.64754855, 0.59507059],
       [0.3120167 , 0.03192053],
       [0.37969568, 0.86204827],
       [0.02818424, 0.98058601],
       [0.396828  , 0.31667695],
       [0.61613117, 0.34472543],
       [0.74338109, 0.51823655],
       [0.73737023, 0.62347628],
       [0.46752571, 0.39628274],
       [0.63097959, 0.38178618]])
X1 = D[:,0]
X2 = D[:,1]
X1,X2
Y = np.array([(2*x1+x2)>1.5 for (x1,x2) in zip(X1,X2)])
Y , X1 , X2
print(X1[Y],X2[Y])
Y_0 = ((Y-1)*(-1)).astype(bool)
print(Y,Y_0)
print(X1[Y_0],X2[Y_0])
plt.scatter(X1[Y],X2[Y],c='r')
plt.scatter(X1[Y_0],X2[Y_0],c='g')

x = np.linspace(0,1,100)
y = 1.5-2*x
plt.plot(x,y)
plt.show()
w = np.zeros(D2.shape[1]) #w因为要和x相乘,要遵循矩阵相乘的法则。
y = Y.astype(int)
y = y*2-1
D2,w,y
#准备模型

def ganzhiqi(x):
    y = np.dot(w,x) 
    # print(y)
    if y>0:
        return 1
    else:
        return -1
ganzhiqi(np.array([1,2,1]))
T = 300
t = 0 
k = 0
N = len(D2)
# for n in range(N):
while(t<T):
    for i in range(N):
        xi = D2[i]
        yi = y[i]
        print(i,xi,yi)
        if yi*ganzhiqi(xi)<=0:
            w = w + yi * xi #在上面b已经合并到w里了,不用再写一次b了
            k = k + 1
            print('更新:',k,w)
        t = t + 1

print("last:",w)
    # if 
    # if w*(y*x)<=0:
    #     w = w + y * x
    # t = t +1
    # print(t,w)
    # if t==T:
    #     break
    

2.关键输出截图

代码如下(示例):

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3.与所给代码更改部分

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
收敛证明即为:
在这里插入图片描述
当然收敛证明用图来证明会更好,证明其是不断降低的

总结

对应的代码文件 与上面的代码块相同,不过是ipynb文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值