“深度学习”学习日记。感知机

2012.12.21

感知机是一种算法,可以理解为一种人工神经元,信号经过固定权重的计算在神经元上求和,当这个和超过了某个界限值是,才会输出1,称为“激活神经元”

利用单层感知机去实现数字电路的与门、或门、非门,通过感知机的叠加形成多层感知机,去实现或非门。

import numpy as np
import matplotlib.pyplot as plt

x1 = float(input())
x2 = float(input())


# 感知机的实现 多输入单一输出
# 实现与门
def AND(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    theda = 0.7
    tmp3 = np.sum(w * x) + theda
    if tmp3 <= 0:
        return 0
    elif tmp3 > 0:
        return 1


# 类似矩阵
# x = np.array([1, 10])
# w = np.array([0.5, 0.5])
# b = -0.7
# print(w * x, '\n')
# print(np.sum(w * x), '\n')
# print(np.sum(w * x) + b, '\n')  # 输出0.40000000000000013 是由浮点数计算的误差


# 实现与非门
def NAND(X1, X2):
    x = np.array([x1, x2])
    w = np.array([-0.5, -0.5])
    b1 = 0.7
    tmp1 = np.sum(w * x) + b1
    if tmp1 <= 0:
        return 0
    else:
        return 1


# 实现或门
def OR(x1, x2):
    x = np.array([x1, x2])
    w = np.array([0.5, 0.5])
    b2 = -0.2
    tmp2 = np.sum(w * x) + b2
    if tmp2 <= 0:
        return 0
    else:
        return 1


# 单层感知机无法实现异或门 故此我们要运用多层感知机
# 叠加层 通过已有的门电路组合
# 异或门的实现

def XOR(x1, x2):
    s1 = NAND(x1, x2)
    s2 = OR(x1, x2)
    y = AND(s1, s2)
    print(y)
    return y


AND(x1, x2)
NAND(x1, x2)
OR(x1, x2)
XOR(x1, x2)

你可能感兴趣的:(深度学习,学习)