BP神经网络Python

本文介绍了基于BP神经网络的二维坐标点二分类问题,通过Python代码实现,并展示了迭代过程中的分类效果。

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

  参考这篇博客 BP神经网络:计算原理详解和MATLAB实现 用Python写了一个对二维坐标点二分类的代码。gif图如下,显示对应迭代次数对坐标点的分类情况
不同迭代轮次分类效果变化


具体实现代码如下:

# -*- coding:utf-8 -*-
import numpy as np
from math import e, pow, fabs
import matplotlib.pyplot as plt
import copy


class ANN:
    def __init__(self, layer_sizes, lr=0.05, epoch=100, batch_size=8):
        self.lr = lr
        self.epoch = epoch
        self.batch_size = batch_size
        self.weights = [np.random.randn(x, y) for x, y in zip(layer_sizes[:-1], layer_sizes[1:])]
        self.ys = [np.random.randn(x) for x in layer_sizes[1:]]
        self.deltas = [np.random.randn(x) for x in layer_sizes[1:]]

    def foreward(self):
        # 计算与输入层连接的隐层
        for i in range(np.shape(self.ys[0])[0]):
            self.ys[0][i] = self.func(np.sum(self.weights[0][j, i] * self.inputs[j] for j in range(len(self.inputs))))
        for i in range(1, len(self.ys)):
            for j in range(np.shape(self.ys[i])[0]):
                self.ys[i][j] = self.func(
                    np.sum(self.weights[i][k, j] * self.ys[i - 1][k] for k in range(np
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值