当前位置: 首页 > news >正文

神经网络基础-神经网络补充概念-09-m个样本的梯度下降

概念

当应用梯度下降算法到具有 m 个训练样本的逻辑回归问题时,我们需要对每个样本计算梯度并进行平均,从而更新模型参数。这个过程通常称为批量梯度下降(Batch Gradient Descent)。

代码实现

import numpy as npdef sigmoid(z):return 1 / (1 + np.exp(-z))def compute_loss(X, y, theta):m = len(y)h = sigmoid(X.dot(theta))loss = (-1/m) * np.sum(y * np.log(h) + (1 - y) * np.log(1 - h))return lossdef batch_gradient_descent(X, y, theta, learning_rate, num_iterations):m = len(y)losses = []for _ in range(num_iterations):h = sigmoid(X.dot(theta))gradient = X.T.dot(h - y) / mtheta -= learning_rate * gradientloss = compute_loss(X, y, theta)losses.append(loss)return theta, losses# 生成一些模拟数据
np.random.seed(42)
m = 100
n = 2
X = np.random.randn(m, n)
X = np.hstack((np.ones((m, 1)), X))
theta_true = np.array([1, 2, 3])
y = (X.dot(theta_true) + np.random.randn(m) * 0.2) > 0# 初始化参数和超参数
theta = np.zeros(X.shape[1])
learning_rate = 0.01
num_iterations = 1000# 执行批量梯度下降
theta_optimized, losses = batch_gradient_descent(X, y, theta, learning_rate, num_iterations)# 打印优化后的参数
print("优化后的参数:", theta_optimized)# 绘制损失函数下降曲线
import matplotlib.pyplot as plt
plt.plot(losses)
plt.xlabel('迭代次数')
plt.ylabel('损失')
plt.title('损失函数下降曲线')
plt.show()

使用了 m 个训练样本,而不是一个。我们首先定义了 sigmoid 函数和计算损失的函数 compute_loss,然后实现了 batch_gradient_descent 函数来执行批量梯度下降。

http://www.lryc.cn/news/126419.html

相关文章:

  • 分布式 - 消息队列Kafka:Kafka消费者分区再均衡(Rebalance)
  • BIO、NIO和AIO
  • 理解 Go 中的切片:append 操作的深入分析(篇1)
  • 由于找不到mfc140u.dll,无法继续执行代码怎么修复?
  • 【0.1】lubancat鲁班猫4刷入debian网络ping 域名不通问题
  • KafkaStream:基本使用
  • 【数据结构】二叉树
  • 基于灰狼优化(GWO)、帝国竞争算法(ICA)和粒子群优化(PSO)对梯度下降法训练的神经网络的权值进行了改进(Matlab代码实现)
  • jenkins自动化构建保姆级教程(持续更新中)
  • HTTPS 的加密流程
  • Jmeter 参数化的几种方法
  • 剑指Offer45.把数组排成最小的数 C++
  • 【java毕业设计】基于SSM+MySql的人才公寓管理系统设计与实现(程序源码)--人才公寓管理系统
  • golang操作excel的高性能库——excelize/v2
  • 学习51单片机怎么开始?
  • [.NET学习笔记] -.NET6.0项目动态加载netstandard2.0报错但项目添加引用则正常的问题
  • 山景DSP芯片可烧录AP8224C2音频处理器方案
  • 来聊聊托管服务提供商(MSP)安全
  • 最新版本的Anaconda环境配置、Cuda、cuDNN以及pytorch环境一键式配置流程
  • 【数据结构与算法】十大经典排序算法-选择排序
  • 【Spring专题】Spring之Bean的生命周期源码解析——阶段一(扫描生成BeanDefinition)
  • 【C#】判断打印机共享状态
  • 运维监控学习笔记7
  • 【业务功能篇64】maven加速 配置settings.xml文件 镜像
  • Spring Boot(六十四):SpringBoot集成Gzip压缩数据
  • Mac安装opencv后无法导入cv2的解决方法
  • 【题解】按之字形顺序打印二叉树
  • 后端人员如何快速上手vue
  • 基于Prometheus监控Kubernetes集群
  • 【数据分析】pandas (三)