深度学习入门实践(一)

最近看了一篇程序员的深度学习入门文章,觉得非常适合我这种数学学得不太好,但懂一点Python的人。
原文地址:https://www.zybuluo.com/hanbingtao/note/433855
撸代码的过程中,发现这篇文章的代码是用Python2写的,而我用的是Python3,于是对教程中的代码做了一些改动,以下是我的代码:

class Perceptron:
    def __init__(self,input_num,activator):
        self.activator = activator
        self.weights = [0 for i in range(input_num)]
        self.bias = 0

    def __str__(self):
        return '权重:%s\n偏置项:%f\n' % (self.weights,self.bias)

    def predict(self,input_vec):
        temp_list=[]
        for i in range(len(input_vec)):
            temp_list.append(input_vec[i]*self.weights[i])
        return self.activator(sum(temp_list)+self.bias)

    def train(self,input_vecs,labels,iteration,rate):
        for i in range(iteration):
            self._one_iteration(input_vecs,labels,rate)

    def _one_iteration(self,input_vecs,labels,rate):
        samples = zip(input_vecs,labels)
        for (input_vec,label) in samples:
            output = self.predict(input_vec)
            self._update_weights(input_vec,output,label,rate)

    def _update_weights(self,input_vec,output,label,rate):
        delta = label-output
        temp_list=[]
        for i in range(len(self.weights)):
            temp_list.append(self.weights[i]+rate*delta*input_vec[i])
        self.weights=temp_list
        self.bias=self.bias+rate*delta


def f(x):
    return 1 if x>0 else 0

def get_training_dataset():
    input_vecs=[[1,1],[0,0],[1,0],[0,1]]
    labels=[1,0,0,0]
    return input_vecs,labels

def train_and_perceptron():
    p=Perceptron(2,f)
    input_vecs,labels=get_training_dataset()
    p.train(input_vecs,labels,10,0.1)
    return p

if __name__=='__main__':
    and_perception=train_and_perceptron()
    print(and_perception)
    print('用训练好的感知器来预测结果:')
    print('predict(1,1):%d'% and_perception.predict([1,1]))
    print('predict(0,0):%d'% and_perception.predict([0,0]))
    print('predict(1,0):%d'% and_perception.predict([1,0]))
    print('predict(0,1):%d'% and_perception.predict([0,1]))

输出结果如下:

这里写图片描述

这样,一个训练好的感知器就完成啦,哈哈哈。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值