简单二分类神经网络(自学练习用)

本文详细介绍了如何使用Python构建一个简单的二分类神经网络,包括定义网络结构、初始化参数、选择Sigmoid激活函数、前向传播、计算损失并进行后向传播更新权重,以及模拟训练数据和标签的过程。
摘要由CSDN通过智能技术生成

简单二分类神经网络

  1. 定义神经网络结构(输入层、隐藏层、输出层的神经元数目)。
  2. 初始化模型的参数(权重和偏置)。
  3. 选择损失函数和优化算法。
  4. 循环执行以下操作:
    • 前向传播:计算预测输出。
    • 计算损失:量化预测值与真实值之间的差异。
    • 后向传播:根据损失函数对每个参数进行偏导数计算,以更新模型的权重和偏置。
    • 更新参数:根据优化算法调整权重和偏置。
import numpy as np

# Sigmoid激活函数及其导数
def sigmoid(x):
    """计算sigmoid激活函数的输出"""
    return 1 / (1 + np.exp(-x))

def sigmoid_derivative(x):
    """计算sigmoid函数的导数"""
    return x * (1 - x)

# 初始化网络参数
input_size = 2  # 输入层节点数
hidden_size = 2  # 隐藏层节点数
output_size = 1  # 输出层节点数
np.random.seed(42)  # 确保每次运行结果一致
weights_input_to_hidden = np.random.uniform(size=(input_size, hidden_size))
weights_hidden_to_output = np.random.uniform(size=(hidden_size, output_size))
learning_rate = 0.1  # 学习率

# 模拟的训练数据和标签
X = np.array([[0, 0], [0, 1], [1, 0], [1, 1]])  # 输入
Y = np.array([[0], [1], [1], [0]])  # 预期输出

# 训练过程
for epoch in range(10000):
    # 前向传播
    hidden_input = np.dot(X, weights_input_to_hidden)  # 计算隐藏层的输入
    hidden_output = sigmoid(hidden_input)  # 计算隐藏层的输出
    final_input = np.dot(hidden_output, weights_hidden_to_output)  # 计算输出层的输入
    final_output = sigmoid(final_input)  # 计算输出层的输出
    
    # 计算损失
    error = Y - final_output  # 计算输出误差
    loss = np.mean(np.square(error)) / 2  # 计算均方误差损失
    
    # 反向传播
    d_error = error * sigmoid_derivative(final_output)  # 输出层误差梯度
    d_weights_hidden_to_output = hidden_output.T.dot(d_error)  # 计算隐藏层到输出层权重的梯度
    
    hidden_error = d_error.dot(weights_hidden_to_output.T) * sigmoid_derivative(hidden_output)  # 隐藏层误差梯度
    d_weights_input_to_hidden = X.T.dot(hidden_error)  # 计算输入层到隐藏层权重的梯度
    
    # 更新权重
    weights_input_to_hidden += learning_rate * d_weights_input_to_hidden  # 更新输入层到隐藏层的权重
    weights_hidden_to_output += learning_rate * d_weights_hidden_to_output  # 更新隐藏层到输出层的权重

# 输出训练后的模型输出
print(final_output)

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值