美文网首页
深度学习的最开始---2

深度学习的最开始---2

作者: zwww7766 | 来源:发表于2020-09-28 18:23 被阅读0次

深度学习的最开始---2

4:实战

> 语言:python

> ide: pycharm

1 : Perceptor.py

# -*- coding:utf8 -*-

'''
神经网络感知器
'''
class Preceptron(object):
def __init__(self,input_num,activator):
'''
       初始化感知器,设置输入参数的个数,以及激活函数。
       激活函数的类型为double -> double
       '''
       self.activator = activator
#权重向量初始化为0
       self.weights = [0.0 for _ in range(input_num)]
#构建一个长度为input_num的double类型list

       #偏置项初始化为0
       self.bias = 0.0
   def __str__(self):
'''
       print时的附加输出项
       打印学习到的权重、偏置项
       '''
       return 'weigths\t:%s\nbias\t:%f\n' %(self.weights, self.bias)
#预测
   def predict(self, input_vec):
'''
       输入向量,输出感知器计算结果
       '''
       # input_vec[] 和 weight[] 打包在一起
       # 变成[(x1,w1),(x2,w2).....(xn,wn)]
       # 最后利用reduce求和
       # zip()多个数组打包方法
       # map(a,b)执行a函数b为参数
       return self.activator(
reduce(lambda a, b: a+b,
map(lambda (x,w): x * w, zip(input_vec, self.weights))
, 0.0) + self.bias)
def train(self , input_vecs, labels, iteration, rate):
'''
       输入训练数据:一组向量、与每个向量对应的label 、训练轮数 、学习率
       '''
       # iteration:迭代
       for i in range(iteration):
self._one_iteration(input_vecs, labels, rate)

def _one_iteration(self, input_vecs, labels, rate):
'''一次迭代。把所有训练数据过一遍'''
       # 把输入和输出打包在一起,成为样本的列表
       # 每个训练样本是(input_vex, label)
       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):
'''按照感知器规则更新权重'''
       # 把input_vec 和 weigths 打包在一起
       delta = label - output
self.weights = map(
lambda (x, w): w + rate * delta * x,
zip(input_vec, self.weights))

self.bias +=rate * delta

2:and_train.py

            

# -*- coding:utf8 -*-

import  Perceptor
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_percetron():
p = Perceptor.Preceptron(2,f)
input_vecs, labels = get_training_dataset()
p.train(input_vecs, labels, 10, 0.1)
return  p
if __name__ == '__main__':
and_perception = train_percetron()

print and_perception
print '1 and 1 = %d' % and_perception.predict([1, 1])
print '0 and 0 = %d' % and_perception.predict([0, 0])
print '1 and 0 = %d' % and_perception.predict([1, 0])
print '0 and 1 = %d' % and_perception.predict([0, 1])

python中的函数和使用方法就不做解释了,百度即可解决,最后执行下来,就完成了一个简单的感知器训练了。

相关文章

  • 深度学习的最开始---2

    深度学习的最开始---2 4:实战 > 语言:python > ide: pycharm 1 : Percepto...

  • 深度学习的最开始---0

    AI 越来越火,也渐渐感觉单向游戏行业发展有点局限了,所以利用工作的闲暇 时间学习学习时下的前沿科技。为自己做点技...

  • 【Tool】Keras 实战IV: 复现 LeNet

    LeNet 是最开始用来进行手写数字识别的网络,也是深度学习开创性的文章,也是接触深度学习的人的"hello wo...

  • 开始学习深度学习

    开始学习深度学习 这句话容易产生歧义,我的意思是,我将开始学习一门课程,课程的名字叫:深度学习。 深度学习,是谷歌...

  • GitHub 上 57 款最流行的开源深度学习项目

    GitHub 上 57 款最流行的开源深度学习项目 GitHub 上 57 款最流行的开源深度学习项目 本文整理了...

  • 1 天搞懂深度学习(附思维导图)

    深度学习概论 介绍深度学习 作者非常浅显的指出机器(深度)学习过程非常简单,分为定义方法、判断方法的优劣、挑选出最...

  • “深度学习”是什么?

    最近由于毕业设计的缘故,开始学习计算机领域最富有魅力的知识:深度学习 什么是深度学习? 深度学习可以理解为“深度”...

  • 二、深度学习介绍

    1、什么是深度学习(Deep Learning DL) 2、深度学习的发展 3、深度学习的应用 计算机视觉、图像处...

  • 梯度下降优化算法(一)

    一 背景 对于机器学习和深度学习较为熟悉的同学,应该大抵都听过这句话,机器学习=模型+策略+算法。其实笔者最开始学...

  • 深度学习-从零开始(2) - LinearRegression

    本章背景 本章是来源于coursera课程 python-machine-learning中的作业2内容。 本章内...

网友评论

      本文标题:深度学习的最开始---2

      本文链接:https://www.haomeiwen.com/subject/vuhjuktx.html