简单神经网络实现

这篇博客介绍如何用numpy创建一个简单的神经网络模型,包括定义网络结构、初始化权重和偏置,以及使用sigmoid激活函数。网络结构为[3, 2, 1],即3个输入神经元,2个隐藏层神经元,1个输出神经元。" 134867025,8753399,ParaView:交互式科学数据可视化工具,"['可视化工具', '科学计算', 'ParaView', '数据可视化', 'GUI']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import numpy as np

# 定义神经网络结构
class Network(object):
    def __init__(self, sizes):
        # [3,2,1] 输入层3个神经元,隐藏层2个,输出层1个 定义总共有多少层,每一层有多少个神经元
        # 网络层数: 一共有多少层
        self.num_layers = len(sizes)
        # 每层神经元的个数
        self.sizes = sizes
        # 初始化每层的偏置 b
        self.biases = [np.random.randn(y, 1) for y in sizes[1:]]

        # self.biases = []
        # # 去size从第一项到最后一项 sizes=[3,2,1] 我们只取2,1
        # for y in sizes[1:]:
        #     # 第一次循环时y为2,第二次为1  输入到隐藏,隐藏到输出: 一共两个偏置
        #     # random.randn 使用标准正态分布来初始化一个数组, 初始化一个y乘以1的数组
        #     # 从输入层到隐藏层有两个偏置,隐藏层到输出层有一个偏置
        #     self.biases.append(np.random.randn(y, 1))

        # 初始化每层的权重 w
        self.weights = [np.random.randn(y, x)for x, y in zip(sizes[:-1], sizes[1:])]

        # self.weights = []
        # # 使用zip同时遍历两个列表
        # for x, y in zip(sizes[:-1], sizes[1:]):
        #     # sizes = [3,2,1]
        #     # 输入层到隐藏层的连线总共有6条: 第一次我们x取3,y取2
        #     # 隐藏层到输出层的连线有2条, x我们取2,y取1
        #     self.weights.append(np.random.randn(y, x))


# sigmoid激励函数(1/1+e的-z次方)
def sigmoid(z):
    return 1.0 / (1.0 + np.exp(-z))


# 创建网络
net = Network([3, 2, 1])
print(net.num_layers)
print(net.sizes)
print(net.biases)
print(net.weights)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值