tensorflow-day01

神经网络

  1. 分层
  2. 层与层之间有连接
  3. 神经元模型
    在这里插入图片描述
    激活函数:
    在这里插入图片描述

AND运算

特征一特征二分类
000
010
100
111

在这里插入图片描述

线性函数:

y=x1w1+x2w2+b

  1. x1和x2为特征值
  2. w1和w2为权重 随机生成 不为0但是无限接近0的正态分布(0均值,标准差为0~1之间的小数)
  3. b 阈值 随机生成 不为0但是无限接近0的正态分布(0均值,标准差为0~1之间的小数)
代码步骤:
  1. 倒入库
  2. 数据预处理:加载数据,分割数据,数据可视化
  3. 构建神经网络
  4. 训练模型
  5. 优化
  6. 性能评估

import numpy as np
import tensorflow as tf

x = [[0, 0], [1, 0], [0, 1], [1, 1], [1, 1], [0, 0]]
y = [0, 0, 0, 1, 1, 0]

层:指的是输入和输出之间的一次运算,几次运算
在这里插入图片描述

分析

在这里插入图片描述

weights = np.random.normal(0, 0.001, size=[np.array(x).shape[1], 1])
bias = np.random.normal(0,0.001,size=1)

阈值:可以赋值为1或0.5


激活函数

在这里插入图片描述
在这里插入图片描述

优化
  1. 反向传播算法:通过预测结果计算预测的误差,根据误差反向调整权重参数和阈值
  2. T度下降 山顶 到 山底 找到 最优的路径 速度不能太慢 下降的步子不能太大
  3. 步子的大小用学习速率rate

调整weights和阈值的正确性

def update_theta(pred, y_true, rate, vec):
    '''

    :param pred: 预测结果
    :param y_true: 正确标签值
    :param rate: 学习速率,优化速度
    :param vec: 输入值
    :param theta: weights
    :param b: 阈值
    :return:
    '''

    loss = y_true - pred
    global weights
    weights = list(map(lambda x1: x1[0] + x1[1] * loss * rate,
                       list(zip(weights, vec))
                       ))
    # for x1 in list(zip(weights,vec)):
    #     print(x1[0],x1[1])
    global bias
    bias = bias + loss * rate
    # print(list(zip(weights, vec)))
    # print(vec)

线性函数:

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


def predict(vec, theta, b):
    '''

    :param vec: 输入的特征向量
    :param theta: 权重
    :param b: 阈值
    :return: 预测结果
    '''
    return f(np.dot(vec, theta) + b)


训练数据

def one_iter():
    samples = zip(x, y)
    for v, lbl in samples:
        pred = predict(v, weights, bias)
        update_theta(pred, lbl, 0.1, v)


for i in range(1000):
    one_iter()

测试数据

# 测试
input_x = [1, 0]
output_y = predict(input_x, weights, bias)
print(output_y)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值