深度学习入门实践(一)

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/warmgulf/article/details/54600257

最近看了一篇程序员的深度学习入门文章,觉得非常适合我这种数学学得不太好,但懂一点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]))

输出结果如下:

这里写图片描述

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

展开阅读全文

没有更多推荐了,返回首页