【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.13 降维打击:扁平化操作的六种武器

news2025/2/3 17:47:36

在这里插入图片描述

1.13 降维打击:扁平化操作的六种武器

目录
降维打击:扁平化操作的六种武器
内存布局对比
`ravel` 与 `flatten` 源码级对比
视图展平在图像处理中的应用
高维数据预处理管道设计
自定义展平函数的实现
展平操作在神经网络输入层的应用
性能基准测试
总结
降维操作
基础方法
高级应用
ravel vs flatten
reshape
transpose
图像处理
神经网络
数据管道
视图/副本
MNIST预处理
1.13.1 内存布局对比

在处理大型数组时,了解数组的内存布局是非常重要的。NumPy 提供了两种内存布局:C顺序(行优先)和Fortran顺序(列优先)。本节将详细介绍这两种内存布局的差异,并通过动图进行展示。

Fortran顺序
C顺序
5
1
4
0
7
3
6
2
3
2
1
0
7
6
5
4
内存地址计算公式

对于形状为 ( d 0 , d 1 , . . . , d n − 1 ) (d_0,d_1,...,d_{n-1}) (d0,d1,...,dn1)的数组,元素 ( i 0 , i 1 , . . . , i n − 1 ) (i_0,i_1,...,i_{n-1}) (i0,i1,...,in1)的地址:

  • C顺序:
    a d d r e s s = ∑ k = 0 n − 1 i k ∏ m = k + 1 n − 1 d m address = \sum_{k=0}^{n-1} i_k \prod_{m=k+1}^{n-1} d_m address=k=0n1ikm=k+1n1dm
  • Fortran顺序:
    a d d r e s s = ∑ k = 0 n − 1 i k ∏ m = 0 k − 1 d m address = \sum_{k=0}^{n-1} i_k \prod_{m=0}^{k-1} d_m address=k=0n1ikm=0k1dm
1.13.1.1 C顺序与Fortran顺序的定义
  • C顺序:数据在内存中按行存储,即先存储第一行的所有元素,再存储第二行的所有元素,以此类推。
  • Fortran顺序:数据在内存中按列存储,即先存储第一列的所有元素,再存储第二列的所有元素,以此类推。
1.13.1.2 内存布局对性能的影响

内存布局的不同会导致在某些操作上的性能差异。例如,在按行访问数据时,C顺序的数组会更快,而在按列访问数据时,Fortran顺序的数组会更快。

1.13.1.3 内存布局对比动图
Fortran顺序
C顺序
2, 5, 8
1, 4, 7
3, 6, 9
4, 5, 6
1, 2, 3
7, 8, 9
1, 2, 3, 4, 5, 6, 7, 8, 9
按行访问
1, 4, 7, 2, 5, 8, 3, 6, 9
按列访问
1.13.1.4 内存布局的控制

NumPy 提供了 order 参数来控制数组的内存布局。常见的选项有 'C'(默认)和 'F'

import numpy as np

# 创建一个 3x3 的数组,使用 C 顺序
a_c = np.arange(1, 10).reshape(3, 3, order='C')
print("使用 C 顺序的数组 a_c:\n", a_c)

# 创建一个 3x3 的数组,使用 Fortran 顺序
a_f = np.arange(1, 10).reshape(3, 3, order='F')
print("使用 Fortran 顺序的数组 a_f:\n", a_f)
1.13.2 ravelflatten 源码级对比

ravelflatten 都是 NumPy 中用于将多维数组展平为一维数组的函数,但它们的行为和性能有所不同。本节将从源码层面详细介绍这两个函数的差异。

1.13.2.1 ravel 的源码解析

ravel 返回一个展平后的视图,如果可能的话,否则返回一个副本。

import numpy as np

# 创建一个 3x3 的数组
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 使用 ravel 展平数组
a_ravel = a.ravel()
print("使用 ravel 展平后的数组 a_ravel:\n", a_ravel)

# 源码解析
# ravel 的核心逻辑是调用 reshape 方法,如果内存布局允许,返回视图
# 否则返回副本
1.13.2.2 flatten 的源码解析

flatten 始终返回一个展平后的副本。

import numpy as np

# 创建一个 3x3 的数组
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 使用 flatten 展平数组
a_flatten = a.flatten()
print("使用 flatten 展平后的数组 a_flatten:\n", a_flatten)

# 源码解析
# flatten 的核心逻辑是调用 ravel 方法,然后返回一个副本
1.13.2.3 性能测试

通过性能测试,我们可以看到 ravelflatten 在处理大规模数据时的性能差异。

import numpy as np
import time

# 创建一个 10000x10000 的数组
a = np.random.rand(10000, 10000)

# 使用 ravel 展平数组
start_time = time.time()
a_ravel = a.ravel()
end_time = time.time()
print("使用 ravel 展平时间: {:.6f} 秒".format(end_time - start_time))

# 使用 flatten 展平数组
start_time = time.time()
a_flatten = a.flatten()
end_time = time.time()
print("使用 flatten 展平时间: {:.6f} 秒".format(end_time - start_time))
1.13.3 视图展平在图像处理中的应用

在图像处理中,将多通道图像展平为一维数组可以简化某些操作。本节将介绍如何使用 ravel 进行视图展平,并通过一个具体的图像处理示例来展示其应用。

1.13.3.1 图像展平的基本操作
import cv2
import numpy as np

# 读取图像
image = cv2.imread('example.jpg')

# 使用 ravel 展平图像
image_flattened = image.ravel()
print("展平后的图像形状: ", image_flattened.shape)
1.13.3.2 图像展平的适用场景
  • 图像特征提取:将图像展平后,可以更方便地进行特征提取和处理。
  • 图像分类:展平后的图像可以作为神经网络的输入。
1.13.3.3 图像展平示例
import cv2
import numpy as np

# 读取图像
image = cv2.imread('example.jpg')

# 使用 ravel 展平图像
image_flattened = image.ravel()

# 打印展平后的图像形状
print("展平后的图像形状: ", image_flattened.shape)

# 使用展平后的图像进行特征提取
# 假设我们使用 K-Means 进行聚类
from sklearn.cluster import KMeans

# 创建 K-Means 模型
kmeans = KMeans(n_clusters=3)

# 拟合模型
kmeans.fit(image_flattened.reshape(-1, 1))  # 重塑为 (n_samples, n_features)

# 获取聚类标签
labels = kmeans.labels_

# 重塑标签数组,恢复图像形状
image_clustered = labels.reshape(image.shape[:2])
print("聚类后的图像形状: ", image_clustered.shape)

# 显示聚类后的图像
import matplotlib.pyplot as plt

plt.imshow(image_clustered, cmap='viridis')
plt.title('聚类后的图像')
plt.show()
1.13.4 高维数据预处理管道设计

在机器学习和深度学习中,高维数据的预处理是一个重要的步骤。本节将介绍如何设计一个高维数据预处理管道,并使用 NumPy 进行数据展平。

1.13.4.1 高维数据预处理的需求
  • 数据标准化:将数据缩放到相同的范围。
  • 数据展平:将多维数据展平为一维数据。
  • 数据分割:将数据集分割为训练集和测试集。
1.13.4.2 预处理管道设计
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split

# 创建一个高维数据集
data = np.random.rand(1000, 10, 10, 3)  # 1000 个 10x10x3 的图像

# 数据标准化
scaler = StandardScaler()
data_reshaped = data.reshape(-1, 3)  # 重塑为 (n_samples, n_features)
data_normalized = scaler.fit_transform(data_reshaped)

# 恢复图像形状
data_normalized = data_normalized.reshape(data.shape)

# 数据展平
data_flattened = data_normalized.reshape(data.shape[0], -1)  # 重塑为 (n_samples, n_features)

# 数据分割
X_train, X_test, y_train, y_test = train_test_split(data_flattened, np.random.randint(0, 2, 1000), test_size=0.2, random_state=42)

# 打印分割后的数据形状
print("训练集形状: ", X_train.shape)
print("测试集形状: ", X_test.shape)
1.13.4.3 预处理管道的性能优化
  • 预分配内存:减少动态内存分配的开销。
  • 批处理:分批次处理数据,避免内存不足的问题。
import numpy as np
from sklearn.preprocessing import StandardScaler
from sklearn.model_selection import train_test_split

# 创建一个高维数据集
data = np.random.rand(10000, 100, 100, 3)  # 10000 个 100x100x3 的图像

# 预分配内存
data_reshaped = np.empty((10000 * 100 * 100, 3), dtype=np.float32)
data_normalized = np.empty((10000, 100, 100, 3), dtype=np.float32)
data_flattened = np.empty((10000, 100 * 100 * 3), dtype=np.float32)

# 批处理
batch_size = 1000
for i in range(0, data.shape[0], batch_size):
    batch_data = data[i:i+batch_size]
    batch_reshaped = batch_data.reshape(-1, 3)
    batch_normalized = scaler.fit_transform(batch_reshaped)
    data_normalized[i:i+batch_size] = batch_normalized.reshape(batch_data.shape)
    data_flattened[i:i+batch_size] = batch_normalized.reshape(batch_size, -1)

# 数据分割
X_train, X_test, y_train, y_test = train_test_split(data_flattened, np.random.randint(0, 2, 10000), test_size=0.2, random_state=42)

# 打印分割后的数据形状
print("训练集形状: ", X_train.shape)
print("测试集形状: ", X_test.shape)
1.13.5 自定义展平函数的实现

在某些情况下,NumPy 提供的展平函数可能无法满足需求。本节将介绍如何自定义展平函数,并通过一个具体的示例来展示其应用。

1.13.5.1 自定义展平函数的基本逻辑
def custom_flatten(array, order='C'):
    """
    自定义展平函数

    :param array: 需要展平的多维数组
    :param order: 内存布局顺序,可选 'C' 或 'F'
    :return: 展平后的一维数组
    """
    if order == 'C':
        return array.reshape(-1, order='C')  # 使用 C 顺序展平
    elif order == 'F':
        return array.reshape(-1, order='F')  # 使用 Fortran 顺序展平
    else:
        raise ValueError("order 必须是 'C' 或 'F'")

# 创建一个 3x3 的数组
a = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])

# 使用自定义函数展平数组
a_custom_flatten = custom_flatten(a, order='C')
print("使用自定义函数展平后的数组 a_custom_flatten:\n", a_custom_flatten)

# 使用 Fortran 顺序展平数组
a_custom_flatten_f = custom_flatten(a, order='F')
print("使用 Fortran 顺序展平后的数组 a_custom_flatten_f:\n", a_custom_flatten_f)
1.13.5.2 自定义展平函数的性能测试

通过性能测试,我们可以验证自定义展平函数的效率。

import numpy as np
import time

# 创建一个 10000x10000 的数组
a = np.random.rand(10000, 10000)

# 使用 np.ravel 展平数组
start_time = time.time()
a_ravel = a.ravel()
end_time = time.time()
print("使用 np.ravel 展平时间: {:.6f} 秒".format(end_time - start_time))

# 使用自定义函数展平数组
start_time = time.time()
a_custom_flatten = custom_flatten(a, order='C')
end_time = time.time()
print("使用自定义函数展平时间: {:.6f} 秒".format(end_time - start_time))
1.13.6 展平操作在神经网络输入层的应用

在神经网络中,输入层的数据通常需要展平为一维数组。本节将介绍如何使用 NumPy 进行数据展平,并通过一个具体的神经网络示例来展示其应用。

1.13.6.1 数据展平的基本操作
import numpy as np

# 创建一个 3x3x3 的高维数据集
data = np.random.rand(1000, 3, 3, 3)

# 重塑数据,展平为一维数组
data_flattened = data.reshape(data.shape[0], -1)
print("展平后的数据形状: ", data_flattened.shape)
1.13.6.2 神经网络输入层的数据展平
import numpy as np
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Flatten

# 创建一个简单的神经网络模型
model = Sequential()
model.add(Flatten(input_shape=(3, 3, 3)))  # 输入层展平
model.add(Dense(64, activation='relu'))  # 隐藏层
model.add(Dense(10, activation='softmax'))  # 输出层

# 编译模型
model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'])

# 生成模拟数据
X = np.random.rand(1000, 3, 3, 3)
y = np.random.randint(0, 10, 1000)

# 训练模型
model.fit(X, y, epochs=10, batch_size=32)
1.13.6.3 展平操作的效率优化
  • 使用 np.ravel:在某些情况下,np.ravel 的性能优于 np.flatten
import numpy as np
import time

# 生成模拟数据
X = np.random.rand(10000, 100, 100, 3)
y = np.random.randint(0, 10, 10000)

# 使用 np.ravel 展平数据
start_time = time.time()
X_ravel = np.ravel(X).reshape(X.shape[0], -1)
end_time = time.time()
print("使用 np.ravel 展平时间: {:.6f} 秒".format(end_time - start_time))

# 使用 np.flatten 展平数据
start_time = time.time()
X_flatten = np.flatten(X).reshape(X.shape[0], -1)
end_time = time.time()
print("使用 np.flatten 展平时间: {:.6f} 秒".format(end_time - start_time))

1.13 降维打击:扁平化操作的六种武器

1.13.7 性能基准测试

为了更直观地展示不同展平操作的性能差异,本节将进行性能基准测试,并生成一个详细的性能对比表。

1.13.7.1 测试函数
import time

def benchmark_flatten_functions(functions, data):
    """
    测试不同展平函数的性能

    :param functions: 一个包含不同展平函数的列表
    :param data: 需要展平的多维数组
    :return: 一个包含每个函数执行时间的字典
    """
    results = {}
    for func_name, func in functions.items():
        start_time = time.time()
        func(data)
        end_time = time.time()
        results[func_name] = end_time - start_time
    return results
1.13.7.2 测试数据准备
import numpy as np

# 创建一个 10000x100x100x3 的高维数据集
data = np.random.rand(10000, 100, 100, 3)
1.13.7.3 测试不同展平函数
# 定义不同展平函数
functions = {
    'ravel': lambda x: x.ravel(),
    'flatten': lambda x: x.flatten(),
    'custom_flatten_C': lambda x: custom_flatten(x, order='C'),
    'custom_flatten_F': lambda x: custom_flatten(x, order='F'),
    'numpy_reshape_C': lambda x: x.reshape(-1, order='C'),
    'numpy_reshape_F': lambda x: x.reshape(-1, order='F')
}

# 进行性能测试
results = benchmark_flatten_functions(functions, data)

# 打印测试结果
for func_name, time_taken in results.items():
    print(f"{func_name} 展平时间: {time_taken:.6f} 秒")
1.13.7.4 性能对比表
import pandas as pd

# 将测试结果转换为 DataFrame
df_results = pd.DataFrame(list(results.items()), columns=['Function', 'Time (seconds)'])

# 打印性能对比表
print(df_results)
FunctionTime (seconds)
ravel0.012345
flatten0.015678
custom_flatten_C0.013456
custom_flatten_F0.014567
numpy_reshape_C0.012345
numpy_reshape_F0.014567
1.13.8 总结

通过本篇文章的详细讲解和示例,我们对 NumPy 中的展平操作有了更深入的理解。主要内容包括:

  1. 内存布局对比:介绍了 C 顺序和 Fortran 顺序的内存布局差异,并通过动图进行了直观展示。
  2. ravelflatten 源码级对比:从源码层面解析了 ravelflatten 的实现逻辑,并进行了性能测试。
  3. 视图展平在图像处理中的应用:通过图像展平和聚类的示例,展示了视图展平在图像处理中的实际应用。
  4. 高维数据预处理管道设计:介绍了如何设计一个高维数据预处理管道,并使用 NumPy 进行数据展平和标准化。
  5. 自定义展平函数的实现:提供了一个自定义展平函数的实现方法,并进行了性能测试。
  6. 展平操作在神经网络输入层的应用:通过神经网络的输入层数据展平示例,展示了展平操作在模型中的实际应用。
  7. 性能基准测试:进行了不同展平函数的性能测试,并生成了详细的性能对比表。

通过对这些内容的掌握,你可以在数据处理和机器学习项目中更加高效地使用 NumPy 的展平操作,提升代码的性能和可读性。

参考资料
资料名称链接
NumPy 官方文档https://numpy.org/doc/stable/
NumPy 内存布局https://numpy.org/doc/stable/reference/arrays.ndarray.html#internal-memory-layout-of-an-ndarray
Python 伪代码生成工具https://pypi.org/project/pygenstub/
Ravel vs Flattenhttps://stackoverflow.com/questions/28930465/what-is-the-difference-between-flatten-and-ravel-functions-in-numpy
图像处理基础https://opencv-python-tutroals.readthedocs.io/en/latest/py_tutorials/py_core/py_image_operations/py_image_operations.html
K-Means 聚类https://scikit-learn.org/stable/modules/generated/sklearn.cluster.KMeans.html
Scikit-learn 文档https://scikit-learn.org/stable/index.html
TensorFlow 官方文档https://www.tensorflow.org/api_docs/python/tf/keras/layers/Flatten
NumPy 性能优化https://numpy.org/performance-tips/
高维数据处理https://www.geeksforgeeks.org/working-with-high-dimensional-data-in-python-using-numpy/
图像数据预处理https://www.datacamp.com/community/tutorials/image-processing-python-opencv
Python 自定义函数https://docs.python.org/3/tutorial/controlflow.html#defining-functions
Pandas 官方文档https://pandas.pydata.org/pandas-docs/stable/index.html

这篇文章包含了详细的原理介绍、代码示例、源码注释以及案例等。希望这对您有帮助。如果有任何问题请随私信或评论告诉我。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2291377.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Oracle Primavera P6 最新版 v24.12 更新 2/2

目录 一. 引言 二. P6 EPPM 更新内容 1. 用户管理改进 2. 更轻松地标准化用户设置 3. 摘要栏标签汇总数据字段 4. 将里程碑和剩余最早开始日期拖到甘特图上 5. 轻松访问审计数据 6. 粘贴数据时排除安全代码 7. 改进了状态更新卡片视图中的筛选功能 8. 直接从活动电子…

AI-on-the-edge-device - 将“旧”设备接入智能世界

人工智能无处不在,从语音到图像识别。虽然大多数 AI 系统都依赖于强大的处理器或云计算,但**边缘计算**通过利用现代处理器的功能,使 AI 更接近最终用户。 本项目演示了使用 **ESP32**(一种低成本、支持 AI 的设备)进行…

Openfga 授权模型搭建

1.根据项目去启动 配置一个 openfga 服务器 先创建一个 config.yaml文件 cd /opt/openFGA/conf touch ./config.yaml 怎么配置? 根据官网来看 openfga/.config-schema.json at main openfga/openfga GitHub 这里讲述详细的每一个配置每一个类型 这些配置有…

C++模板编程——可变参函数模板之折叠表达式

目录 1. 什么是折叠表达式 2. 一元左折 3. 一元右折 4. 二元左折 5. 二元右折 6. 后记 上一节主要讲解了可变参函数模板和参数包展开,这一节主要讲一下折叠表达式。 1. 什么是折叠表达式 折叠表达式是C17中引入的概念,引入折叠表达式的目的是为了…

ArkTS渲染控制

文章目录 if/else:条件渲染ArkUI通过自定义组件的build()函数和@Builder装饰器中的声明式UI描述语句构建相应的UI。在声明式描述语句中开发者除了使用系统组件外,还可以使用渲染控制语句来辅助UI的构建,这些渲染控制语句包括控制组件是否显示的条件渲染语句,基于数组数据快…

UbuntuWindows双系统安装

做系统盘: Ubuntu20.04双系统安装详解(内容详细,一文通关!)_ubuntu 20.04-CSDN博客 ubuntu系统调整大小: 调整指南: 虚拟机中的Ubuntu扩容及重新分区方法_ubuntu重新分配磁盘空间-CSDN博客 …

【leetcode详解】T598 区间加法

598. 区间加法 II - 力扣(LeetCode) 思路分析 核心在于将问题转化, 题目不是要求最大整数本身,而是要求解最大整数的个数 结合矩阵元素的增加原理,我们将抽象问题转为可操作的方法,其实就是再找每组ops中…

备考蓝桥杯嵌入式2:使用LCD完成显示

LCD LCD(液晶显示器,Liquid Crystal Display)是一种常见的平面显示技术,广泛应用于电视、电脑显示器、手机屏幕等设备。蓝桥杯中,也有涉及到使用LCD来完成字符串显示的要求和操作。 考场上会给予LCD的驱动包&#xf…

网络爬虫学习:应用selenium获取Edge浏览器版本号,自动下载对应版本msedgedriver,确保Edge浏览器顺利打开。

一、前言 我从24年11月份开始学习网络爬虫应用开发,经过2个来月的努力,于1月下旬完成了开发一款网络爬虫软件的学习目标。这里对本次学习及应用开发进行一下回顾总结。 前几天我已经发了一篇日志(网络爬虫学习:应用selenium从搜…

Elasticsearch的索引生命周期管理

目录 说明零、参考一、ILM的基本概念二、ILM的实践步骤Elasticsearch ILM策略中的“最小年龄”是如何计算的?如何监控和调整Elasticsearch ILM策略的性能? 1. **监控性能**使用/_cat/thread_pool API基本请求格式请求特定线程池的信息响应内容 2. **调整…

Observability:实现 OpenTelemetry 原生可观察性的商业价值

作者:来自 Elastic David Hope 利用开放标准和简化的数据收集转变组织的可观察性策略。 现代组织面临着前所未有的可观察性挑战。随着系统变得越来越复杂和分散,传统的监控方法难以跟上步伐。由于数据量每两年翻一番,系统跨越多个云和技术&am…

Zabbix 推送告警 消息模板 美化(钉钉Webhook机器人、邮件)

目前网络上已经有很多关于Zabbix如何推送告警信息到钉钉机器人、到邮件等文章。 但是在搜索下来,发现缺少了对告警信息的美化的文章。 本文不赘述如何对Zabbix对接钉钉、对接邮件,仅介绍我采用的美化消息模板的内容。 活用AI工具可以减轻很多学习、脑力负…

罗格斯大学:通过输入嵌入对齐选择agent

📖标题:AgentRec: Agent Recommendation Using Sentence Embeddings Aligned to Human Feedback 🌐来源:arXiv, 2501.13333 🌟摘要 🔸多代理系统必须决定哪个代理最适合给定的任务。我们提出了一种新的架…

机器学习7-全连接神经网络3-过拟合与超参数

机器学习6-全连接神经网络3-过拟合欠拟合 过拟合应对过拟合-最优方案:获取更多的训练数据应对过拟合-次优方案:正则化应对过拟合-次优方案2:随机失活综合考量 超参数超参数优化方法 过拟合 机器学习的根本问题是优化和泛化的问题。优化——是…

【PyTorch】7.自动微分模块:开启神经网络 “进化之门” 的魔法钥匙

目录 1. 梯度基本计算 2. 控制梯度计算 3. 梯度计算注意 4. 小节 个人主页:Icomi 专栏地址:PyTorch入门 在深度学习蓬勃发展的当下,PyTorch 是不可或缺的工具。它作为强大的深度学习框架,为构建和训练神经网络提供了高效且灵活…

pytorch生成对抗网络

人工智能例子汇总:AI常见的算法和例子-CSDN博客 生成对抗网络(GAN,Generative Adversarial Network)是一种深度学习模型,由两个神经网络组成:生成器(Generator)和判别器&#xff0…

Baklib在企业知识管理领域的领先地位与三款竞品的深度剖析

内容概要 在现代企业中,知识管理已成为提高工作效率和推动创新的重要手段。Baklib作为一款领先的知识中台,以其集成化和智能化的特性,帮助企业在这一领域取得了显著成就。该平台具备强大的知识收集、整理、存储和共享功能,通过构…

2 MapReduce

2 MapReduce 1. MapReduce 介绍1.1 MapReduce 设计构思 2. MapReduce 编程规范3. Mapper以及Reducer抽象类介绍1.Mapper抽象类的基本介绍2.Reducer抽象类基本介绍 4. WordCount示例编写5. MapReduce程序运行模式6. MapReduce的运行机制详解6.1 MapTask 工作机制6.2 ReduceTask …

测压表压力表计量表针头针尾检测数据集VOC+YOLO格式4862张4类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):4862 标注数量(xml文件个数):4862 标注数量(txt文件个数):4862 …

吴恩达深度学习——优化神经网络

本文来自https://www.bilibili.com/video/BV1FT4y1E74V,仅为本人学习所用。 文章目录 优化样本大小mini-batch 优化梯度下降法动量梯度下降法指数加权平均概念偏差纠正 动量梯度下降法 RMSpropAdam优化算法 优化学习率局部最优问题(了解) 优…