Andrej Karpathy 的 Neural Networks: Zero to Hero 系列视频笔记:2 - Makemore

原视频: The spelled-out intro to language modeling: building makemore 注意,可以透过将代码复制到 colab 或 jupyter notebook 运行, 部分生图的输出结果本文贴图效果不佳,所以建议亲自动手跟着视频操作理解。本文的笔记仅作参考。 目标 Makemore 接收一个文本文件(例如提供的 names.txt),其中每一行都假定为一个训练“对象”。 然后,它生成更多类似的东西。 在内部,Makemore 是一个字符级语言模型。每一行都包含一个示例,即模型中的一系列单个字符。 这是Makemore操作的层面,试图预测序列/单词中的下一个字符。 Makemore 是一个以现代方式实现的字符级语言建模工具。 我们的目标是从零开始构建Makemore,并理解其工作原理。 1 2 3 4 5 6 import torch import torch.nn.functional as F import matplotlib.pyplot as plt %matplotlib inline device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu") # Use GPU if available (faster calculations with PyTorch) 1 2 3 4 5 6 words = open('names.txt', 'r')....

九月 12, 2024 · 23 分钟

Andrej Karpathy 的 Neural Networks: Zero to Hero 系列视频笔记:1 - Micrograd

原视频: The spelled-out intro to neural networks and backpropagation: building micrograd 注意,可以透过将代码复制到 colab 或 jupyter notebook 运行, 部分生图的输出结果本文贴图效果不佳,所以建议亲自动手跟着视频操作理解。本文的笔记仅作参考。 1 2 3 4 5 6 import os import math import torch import numpy as np import matplotlib.pyplot as plt %matplotlib inline 目的 目标是理解对于micrograd示例中的神经网络(Neural Network, NN)定义、训练和反向传播(backprop)是什么样子的。这个教程基本上是一个逐步的项目演示。 Micrograd是一个自动微分引擎(Autograd engine),它仅用150行代码就包含了训练神经网络的所有必要元素。 Micrograd还从头实现了反向传播(Backpropagation)。 反向传播允许你迭代调整神经网络的权重,以最小化给定的损失函数/提高预测准确性。 什么是 Micrograd? Micrograd是一个小巧友好的自动微分引擎,支持自动微分和高阶导数计算。 它由不到150行的Python代码组成,是理解通用自动微分引擎工作原理的有效学习工具。 简单的使用示例: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 from micrograd.engine import Value a = Value(-4....

九月 11, 2024 · 24 分钟

OMR 相关论文阅读:基于端到端线性化编码的钢琴乐谱光学识别技术

核心观点 1. 研究背景 (Background of the Study): 文章探讨了如何通过深度学习方法实现光学音乐识别 (OMR) 的端到端系统,尤其是针对钢琴形式音乐的识别。尽管近年来在单声部音乐的光学识别方面取得了进展,但现有的 OMR 模型很难处理钢琴音乐中包含的多声部和多行谱表。 钢琴音乐的复杂性源于其多声部的独立并行,声部可以在乐曲中自由出现和消失。这种复杂性给 OMR 模型的输出带来了额外的挑战。 2. 核心贡献 (Key Contributions): Linearized MusicXML 编码: 提出了一个线性化的 MusicXML 格式 (Linearized MusicXML),以便端到端模型直接训练,同时保持与行业标准 MusicXML 格式的紧密一致性。 这种编码方法通过对 XML 树进行深度优先遍历,并将每个元素转换为相应的令牌,从而减少冗余,专注于乐谱的视觉表示,抑制语义信息并忽略声音、布局和元数据。 数据集构建与测试: 构建了一个基于 OpenScore Lieder 语料库的钢琴音乐基准测试集,包含合成训练图像和来自公共 IMSLP 扫描的真实世界图像。 数据集包括两种变体:合成和扫描,分别用于训练、开发和测试。合成数据用于模型的初始训练,扫描数据用于测试模型的真实性能。 模型训练与优化: 使用新的基于 LSTM 的模型架构进行训练,并进行了精调以作为基准。 模型在合成和扫描的测试集上都表现出色,显著超越了现有的钢琴音乐数据集上的最先进结果。 评价指标与结果分析: 采用 TEDn 度量模型来评估输出的 MusicXML 文件,并与当前最先进的结果进行比较,证明了新的编码和模型架构在钢琴音乐 OMR 任务中的有效性。 结果表明,使用 LMX 线性化的端到端 OMR 系统在钢琴音乐识别中达到了最先进的性能。 3. 技术实现 (Technical Implementation): 模型架构: 文章提出了一种新的 LSTM 解码器与 Bahdanou 注意力机制相结合的序列到序列架构,用于钢琴音乐的光学识别。 该模型首先通过多个卷积层处理输入图像,然后通过双向 LSTM 层进行上下文化,最后使用带有注意力机制的 LSTM 解码器生成输出。 数据增强与训练策略: 针对合成数据与真实扫描数据的差异,设计了一系列数据增强操作,如水平位移、旋转、垂直位移等,以提高模型的泛化能力。...

八月 27, 2024 · 2 分钟