Vago Mundo

尘世闲游,听凭风引

    PyDyNet:Neuron Network implementation using Numpy based on Autodiff

    自实现深度学习库的简述

    前作:PyNet: Use NumPy to build neuron network。在那里我们基于求导规则实现了全连接网络。在这里,我们向当今的深度学习框架看齐,实现属于自己的DL框架。 库地址:https://github.com/Kaslanarian/PyDyNet. Overview PyDyNet(Python Dynamic network)也是纯NumPy实现的神经网...

    一维卷积的快速实现

    在小数据情景下超越PyTorch

    前篇:《Understanding of a Convolutional Neural Network》的文献解读。 在CNN中,卷积运算是需要循环扫描数据实现的,难以向量化,从而拖慢的运行速度。本文是笔者在使用纯NumPy实现(卷积)神经网络中遇到该问题后,通过自己探索和阅读资料总结出的几种卷积操作加速方法。本文只考虑Conv1d,即一维卷积的前向传播过程。 一维卷积简介 在AI这边...

    NumPy的广播机制

    解析与实现

    前篇:https://welts.xyz/2021/04/26/numpy_dim/. 我们在前面研究了NumPy在0,1,2维下的广播。但广播算法在NumPy的文档中已经进行了充分的说明,我们在这里进行汉化和解读,以及测试。 先对NumPy数组的属性做一些规定,首先是ndarray.shape,我们称其为“形状”;ndarray.ndim被称为数组的“维数”,其实就是len(ndarr...

    Droput和BN的探究

    原理与实现

    Dropout和Batch Normalization是深度神经网络中常用的两种过拟合方法。本文简述两种技术(层)在神经网络中的技术细节,包括实现方法和训练模式和测试模式的区别。这里默认读者理解下面两张PPT的内容,即Dropout和BN的基本思想: Dropout的前向反向传播 考虑我们神经网络的线性层(不考虑偏置项): \[\pmb f=\pmb X_{l\times n_...

    动态计算图的实现

    以及PyTorch的内部原理浅析

    引言 前篇:https://welts.xyz/2022/04/18/naive_graph/。 代码地址:https://github.com/Kaslanarian/PyAdNet/blob/main/naive_example.py。 在那里,我们构建了标量级的静态计算图。静态计算图的宗旨是先建图再计算。这里的计算包括前向传播和反向传播。深度学习框架,比如TensorFlow1和...

    可微分计算图的实现

    前向求值+反向模式

    前篇:https://welts.xyz/2022/04/15/compute_map/. 这里我们关注简单计算图(即一个节点的值是一个浮点数,而不是矩阵)的实现。 基本图的构建 从基本的数据结构开始,定义基本计算图和计算图节点: from random import randint class NaiveGraph: node_list = [] # 图节点列表...

    文献解读:Automatic differentiation in machine learning:a survey

    自动微分及其两种模式

    笔者在很久之前写过一篇《计算图与自动微分》,介绍了当今流行的深度学习框架,比如Pytorch,TensorFlow的基础原理:计算图与自动微分。基于这样机制,框架能够简单,快捷地计算目标函数梯度以进行梯度下降。当时有实现它的打算,但由于能力原因(更多是不敢去想)拖延了。 论文《Automatic differentiation in machine learning: a survey》是...

    自然语言处理(鱼书)读书笔记

    一天速通

    引言 神经网络复习 自然语言和单词的分布式表示 同义词词典(Thesaurus) 同义词词典的问题 基于计数的方法 衡量相似度 基于计数方法的改进 点互信息...

    Deep Inside Convolutional Networks:Visualising Image Classifification Models and Saliency Maps

    文献解读:卷积神经网络可视化方法

    原文:https://arxiv.org/abs/1312.6034. 这篇文章研究的是图像分类模型的可视化 (Visualization of image classification models),使用深度卷积网络(ConvNets)进行学习。作者考虑了基于计算类别分数对图像梯度的两种可视化方法: 生成最大化类别得分的输入图像; 计算类别的显著图(Saliency Map...

    sklearn中的文本特征提取

    实现针对中文特征提取的sklearn接口

    引言 最近在学习《自然语言处理》课程,第一次作业是使用非深度方法进行中文文本分类。笔者手动实现了数据的简单预处理,包括 文本分词; 停用词删除; 基于词袋模型构建词向量和文档向量。 最后笔者得到的数据集$X$是一个数量级为$10^6\times10^6$的非负整数矩阵。但当使用sklearn中的模型,比如LinearSVC进行分类时,会将$X$中元素转化成float64...