Py学习  »  机器学习算法

深度学习的一点点一点点知识

言丶5 • 4 年前 • 75 次点击  

深度学习第一天

我们手里有大量的x和y,求权重
训练的是权重
数据样本

x W Y
身高 0
体重 0
血型 0.3
脚指头 0.8

一组x计算出对应的一个Y
计算过程是w
下面的图片就是最基础的公式
我们已知数据是大量的x和y
希望通过“西塔”来获得W
在这里插入图片描述

我们的学习才刚刚开始,首先需要理解的是与门

x1 x2 Y
0 0 0
0 1 0
1 0 0
1 1 1

上述就是一个与门的构成,其中原理应该长脑子就会,所以说我们直接上代码

def AND(x1, x2):
    w1, w2, theta = 0.5, 0.5, 0.7
    tmp = x1*w1 + x2*w2
    if tmp <= theta:
        return 0
    elif tmp > theta:
        return 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

下面我们再来考虑一下与非门和或门

与非门

x1 x2 Y
0 0 1
0 1 1
1 0 1
1 1 0

或门

x1 x2 Y
0 0 0
0 1 1
1 0 1
1 1 1

感知机的简单实现

了解上述的门电路之后,我们开始实现一个简单的感知机
刚才的与门代码知识一个基础部分,我们先对它们的实现稍作修改

在这里插入图片描述

这里用到了这个公式

import  numpy as np
x = np.array([0,1])
w = np.array([0.5,0.5])
b = -0.7
print(np.sum(w*x))
print(np.sum(w*x)+b)
#0.5
#-0.19999999999999996
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

由此我们可以看出,当numpy的两个数组元素相同的时候,我们对他们进行相乘相加和(即—numpy.sum()方法)
再和b(偏置)相加,即可完成上述公式运算

然后我们再实现刚才的与门,这里我们先贴出第一次的与门

def AND(


    
x1, x2):
    w1, w2, theta = 0.5, 0.5, 0.7
    tmp = x1*w1 + x2*w2
    if tmp <= theta:
        return 0
    elif tmp > theta:
        return 1
#0 0 0 1        
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

然后是我们要实现的新的与门

import  numpy as np
def AND(x1,x2):
    w = np.array([0.5,0.5])
    x = np.array([x1,x2])
    b = -0.7
    tmp = np.sum(w*x)+b
    if tmp <= 0:
        return 0
    elif tmp > 0:
        return 1
#0 0 0 1        
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

具体的说,W1和W2 是 控制输入信号重要性的参数 ,而偏置(b)是 调整神经元被激活的容易程度 (输出信号为1的程度) 的参数

接着,我们实现与非门和或门

import numpy as np
def NAND(x1,x2):
    w = np.array([-0.5,-0.5])#仅权重和偏置改变了
    x = np.array([x1,x2])
    b = 0.7
    tmp = np.sum(w*x)+b
    if tmp <=0:
        return 0
    elif tmp >0:
        return 1

def OR(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5]) # 仅权重和偏置与AND不同!
    b = -0.2
    tmp = np.sum(w*x) + b
    if tmp <= 0:
        return 0
    else:
        return 1
# 1 1 1 0
# 0 1 1 1
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

与门、与非门、或门是具有相同构造的感知机,区别只在于权重参数的值。因此,在与非门 和或门的实现中,仅设置权重和偏置的值这一点和与门的实现不同。

异或门比较特殊




    

def XOR(x1,x2):
    s1 = NAND(x1,x2)
    s2 = OR(x1,x2)
    y = AND(s1,s2)
    return y
    # 0 1 1 0
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

但是有数字逻辑基础的话,应该不难理解


先说这些,剩下的有缘再见


Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/52857
 
75 次点击