深度学习
文章平均质量分 93
笨牛慢耕
谋生:信号处理,无线通信,芯片设计
兴趣:数理计算机人工智能
遗憾:世界如此丰富,而我如此无知
铭记:日拱一卒终身成长;忠于内心远离油腻;成就自己照亮周围
寄语自己:愿你历尽劫波,内心永远少年
展开
-
Tutorial: Mathmatical Derivation of Backpropagation
反向传播是神经网络中常用的一种训练算法,其基本思想是通过计算损失函数对每个权重的梯度,然后使用梯度下降法来优化神经网络的权重。在神经网络发展的早期,当只有一层网络的时候,梯度下降算法的实现是显而易见的。单层的神经网络(线性回归啊,logistic回归其实都可以看成是单层的神经网络)能做的事情有限。在设计更多层数的神经网络的时候,所遇到的一个根本的难题就是如何(有效地)计算最终的损失函数对除了输出层以外的各层(即隐藏层)的权重参数的梯度。原创 2023-08-30 16:37:25 · 755 阅读 · 0 评论 -
Softmax, Cross-entropy Loss and Gradient derivation and Implementation
简要介绍机器学习、深度学习中常用的softmax函数,cross-entropy损失函数,以及它们的梯度推导(尤其是softmax和cross-entropy loss级联后的梯度推导)。特别地,从对单个变量的偏导数,到对输入向量的偏导数(即梯度),乃至到对整个batch的梯度的矩阵表示。最后,给出对应的python实现。这些将成为完全DIY用python实现一个分类神经网络的一个基本构成模块。原创 2023-08-26 10:06:00 · 909 阅读 · 0 评论 -
CS231n Module2: CNN part1:Architecture
本文编译自斯坦福大学的CS231n课程(2022) Module2:卷积神经网络。本文是其中第一部分,介绍卷积神经网络的基本结构。本系列不是对原始课件网页内容的完全翻译,只是作为学习笔记的摘要总结,主要是自我参考,而且也可能夹带一些私货(自己的理解和延申,不保证准确性)。如果想要了解更具体的细节,还请服用原文。如果本摘要恰巧也对小伙伴们有所参考则纯属无心插柳概不认账^-^。CS231n Module1: 神经网络1:Setting Up the Architecture。原创 2022-10-02 17:12:34 · 1035 阅读 · 0 评论 -
CS231n-2022 Module1: Minimal Neural Network case study
本文编译自斯坦福大学的CS231n课程(2022) Module1课程中神经网络部分之一,原课件网页参见:本文(本系列)不是对原始课件网页内容的完全忠实翻译,只是作为学习笔记的摘要,主要是自我参考,而且也可能夹带一些私货(自己的理解和延申,不保证准确性)。如果想要更准确地了解更具体的细节,还请服用原文。如果本摘要恰巧也对小伙伴们有所参考则纯属无心插柳概不认账^-^。前面几篇:CS231n-2022 Module1: 神经网络1:Setting Up the Architecture。...原创 2022-08-31 16:10:03 · 1034 阅读 · 2 评论 -
CS231n-2022 Module1: 神经网络3:Learning and Evaluation
本文编译自斯坦福大学的CS231n课程(2022) Module1课程中神经网络部分之一,原课件网页参见:本文(本系列)不是对原始课件网页内容的完全翻译,只是作为学习笔记的摘要总结,主要是自我参考,主要是自我参考,而且也可能夹带一些私货(自己的理解和延申,不保证准确性)。如果想要了解更具体的细节,还请服用原文。如果本摘要恰巧也对小伙伴们有所参考则纯属无心插柳概不认账^-^。......原创 2022-08-27 17:33:19 · 1080 阅读 · 0 评论 -
CS231n-2022 Module1: 神经网络3:Learning之参数更新
本文编译自斯坦福大学的CS231n课程(2022) Module1课程中神经网络部分之一,原课件网页参见:https://cs231n.github.io/neural-networks-3/本文(本系列)不是对原始课件网页内容的完全翻译,只是作为学习笔记的摘要总结,主要是自我参考,而且也可能夹带一些私货(自己的理解和延申,不保证准确性)。如果想要了解更具体的细节,还请服用原文。如果本摘要恰巧也对小伙伴们有所参考则纯属无心插柳概不认账^-^。...............原创 2022-08-26 21:43:25 · 1128 阅读 · 1 评论 -
CS231n-2022 Module1: 神经网络3:Learning之梯度检查
本文编译自斯坦福大学的CS231n课程(2022) Module1课程中神经网络部分之一,原课件网页参见:本文(本系列)不是对原始课件网页内容的完全翻译,只是作为学习笔记的摘要总结,主要是自我参考,而且也可能夹带一些私货(自己的理解和延申)。如果想要了解更多的细节,还请服用原文。如果本摘要恰巧也对小伙伴们有所参考则纯属无心插柳^-^。前面两篇:前面章节介绍了网络的静态部分:网络连接、数据、损失函数等。...原创 2022-08-23 22:30:01 · 837 阅读 · 4 评论 -
CS231n-2022 Module1: 神经网络1:Setting Up the Architecture
本文编译自斯坦福大学的CS231n课程(2022) Module1课程中神经网络部分之一,参见:本文(本系列)不是对原始课件网页内容的完全翻译,只是作为学习笔记的要点总结式的搬运,主要是自我参考。如果恰巧也对小伙伴们有所参考则纯属无心插柳^-^。............原创 2022-08-17 16:10:49 · 1077 阅读 · 0 评论 -
CS231n-2022 Module1: 神经网络(2)
本文编译自斯坦福大学的CS231n课程(2022) Module1课程中神经网络部分的内容: 【1】Neural Networks Part 2: Setting up the Data and the Loss To be added. To be added. 以下,以形状为 表示样本数据个数,( dimensionality)。 主要有三种数据预处理技术。 对数据的每一个feature进行零均值化原创 2022-06-29 07:49:59 · 1101 阅读 · 2 评论 -
cs231n-2022-assignment2#Q1:多层全连接神经网络
cs231n-2022-assignment2#Q1:多层全连接神经网络,关键实现解说及相应代码。原创 2022-05-24 12:43:54 · 2278 阅读 · 5 评论 -
cs231n-2022-assignment1#Q5:Higher Level Representations: Image Features
cs231n-2022-assignment1#Q5:Higher Level Representations: Image Features原创 2022-05-21 22:50:47 · 954 阅读 · 0 评论 -
PyTorch + CUDA 版本匹配安装
PyTorch与CUDA的版本匹配安装原创 2022-05-21 15:25:50 · 9110 阅读 · 0 评论 -
cs231n-2022-assignment1#Q4:Two-Layer Neural Network(Part2)
本文是李飞飞cs231n-2022的第一次作业的第4个问题(Two-Layer Neural Network)的第2部分(Solver, Debugging and Hyperparameter tuning)的关键点的解说及其相关代码原创 2022-05-19 10:19:47 · 2064 阅读 · 6 评论 -
cs231n-2022-assignment1#Q4:Two-Layer Neural Network(Part1)
本文是李飞飞cs231n-2022的第一次作业的第4个问题(Two-Layer Neural Network)。 手撕代码实现一个最简单的两层神经网络。没有starter code的基础,以及循序渐进的问题安排,感觉是万万无法完成这样的一个作业。不管从深度学习算法还是从编程技能来说都是一个巨大的挑战。原创 2022-05-17 22:06:34 · 3110 阅读 · 3 评论 -
cs231n-2022-assignment1#Q3:Implementing a softmax classifier
本文是李飞飞cs231n-2022的第一次作业的第3个问题(Implement a Softmax classifier)。 包括softmax loss函数以及梯度的详细推导以及代码。原创 2022-05-12 09:18:26 · 1104 阅读 · 0 评论 -
cs231n-2022-assignment1#Q2:训练一个支持向量机(SVM)
本文是李飞飞cs231n-2022的第一次作业的第2个问题(Training a Support Vector Machine)。 本作业主要包括以下内容(在starter-code的基础上以完型填空的方式补充关键代码最终构成一个完整的SVM模型):SVM损失函数实现,梯度实现,向量化实现,Mini-batch SGD训练,超参数调优等等原创 2022-05-10 16:58:06 · 1139 阅读 · 2 评论 -
cs231n-2022-assignment1#Q1:kNN图像分类器实验
本文是李飞飞cs231n-2022的第一次作业的要点介绍。本次作业相关的课程内容参见:CS231n Convolutional Neural Networks for Visual Recognition建议有兴趣的伙伴读原文,过于精彩,不敢搬运。本文仅在作业完成过程中根据需要补充说明一些要点。作业的原始starter_code也可以从该课程网站下载。本文中只贴一些需要说明的关键代码,本渣完成的作业也将另外打包上传(下载地址参见文末)供有兴趣的小伙伴参考。原创 2022-05-07 16:21:39 · 1920 阅读 · 0 评论 -
Image数据数值计算处理的一个小问题
今天在做图像分类实验的手撕代码实验中碰到了一个非常无厘头的问题,折腾了两个小时,最后搞明白了错在哪儿了后,心中一万头草泥马奔腾而过。。。感觉自己就是一个智障。。。记录于此,给自己提个醒。背景是做一个图像分类器(Image classification)的手撕代码实验,作为对比,先实现一个最naive的kNN分类器。在kNN分类器中需要求两个图像之间的距离,这里采用欧几里得距离。纸上得来终觉浅,绝知此事要躬行。。。原创 2022-05-06 16:31:04 · 728 阅读 · 0 评论 -
TensorFlow2 Object Detection API安装及运行实验记录
Tensorflow2 Object Detection API安装及简易的确认实验记录原创 2022-05-02 13:32:06 · 3724 阅读 · 1 评论 -
MobileNets(V1)的Tensorflow实现
MobileNetV1 Tensorflow实现及在cifar10数据集上的实验原创 2022-04-30 17:50:35 · 2126 阅读 · 0 评论 -
MobileNets(V1)简介及两个初步的代码实验
MobileNet在2017年由谷歌2017年提出[1],主要是为了解决卷积神经网络在移动端或者嵌入式平台中落地应用的运算负荷的问题。一方面,各路大神不断地在修炼越来越大的网络,另一方面,移动端或者嵌入式则要求轻量级的网络,同时又要求性能上没有严重的损失,正所谓既要马儿跑的好,又要马儿不吃草。本文概要性地价绍MobileNet的基本要素,然后做了两个代码实验: (1) 基于预训练的MobileNet模型的特征提取训练的猫狗分类器;(2) 仅利用MobileNet模型结构在CIFAR10数据集原创 2022-04-25 21:02:55 · 3419 阅读 · 0 评论 -
A brief introduction to Depthwise Separable Convolution
受委托要做一个MobileNet-SSD的嵌入式实现(基于一款车规级主芯片开发平台上的demo实现)的调研(花费大量时间学习的机器学习和深度学习方面的知识终于要开始转化为生产力了,摩拳擦掌,有点小兴奋。。。),首先碰到的第一个概念就是depth wise separable convolution,本文是针对depth wise separable convolution的一个私藏学习笔记。原创 2022-04-20 18:01:58 · 1156 阅读 · 0 评论 -
深度学习笔记:卷积神经网络的可视化--卷积核本征模式
想要了解卷积神经网络到底学到了什么,另一种简单的方法时显示每个卷积滤波器核所相应的视觉模式。这个可以通过在输入空间中的梯度上升(gradient ascent in input space)来实现:从空白输入图像开始,对卷积神经网络的输入图像执行梯度下降(实际上在以下实验中用的是梯度上升)处理以最大化某个特定滤波器的响应,最终得到的输入图像就是使得该特定滤波器具有最大相应的图像。我们可以称这个图像为该卷积滤波器核的特征模式。...原创 2022-02-22 16:26:45 · 2905 阅读 · 0 评论 -
深度学习笔记:卷积神经网络的可视化--特征图
特征图的可视化,是指对于给定输入图像,展示模型处理后的各中间层(包括卷积层和池化层等)输出的特征图(各中间层的激活函数的输出代表该层特征图)。这让我们可以看到输入数据在网络中是如何被分解,不同滤波器分别聚焦于原始图像的什么方面的信息。我们希望在三个维度对特征图进行可视化:宽度、高度和深度(通道,channel)。每个通道都对应相对独立的特征。所以将这些特征图可视化的正确方法是将每个通道的内容分别会支持成二维图像。原创 2022-01-27 15:06:12 · 35457 阅读 · 3 评论 -
深度学习笔记:使用预训练模型之模型微调+数据增强
本系列介绍如何搭建一个卷积神经网络用于图像分类的深度学习问题,尤其是再训练数据集比较小的场合。通常来说,深度学习需要大量的数据进行训练,尤其是像在图像处理这种通常数据维度非常高的场合。但是当你没有一个足够大的数据集进行训练的时候应该怎么办呢?本文是本(小)系列的最后一篇,基于预训练模型的模型微调训练一个卷积神经网络图像分类器。原创 2022-01-11 17:05:00 · 8105 阅读 · 0 评论 -
深度学习笔记:使用预训练模型之在线特征提取+数据增强
本文通过一系列的对照试验,检验在小型猫狗数据集上基于预训练模型,数据增强、卷积基参与训练以及ImageDataGenerator(preprocessing_function=preprocess_input)所带来的改善。结论是主要的改善来自于preprocess_input,F.Chollet摆了一个小小的乌龙,当然这不会使这本书有所失色^-^。原创 2022-01-06 17:54:25 · 4115 阅读 · 0 评论 -
深度学习笔记:为什么(预)特征提取不能与数据增强结合使用
对F.chollet《Deep Learning with Python》#5.3.1中所提到的预特征提取不能与数据增强结合使用的原因的辅助解释原创 2022-01-06 09:14:49 · 2126 阅读 · 1 评论 -
深度学习笔记:利用预训练模型之特征提取训练小数据集上的图像分类器
前面两篇我们分别进行了在不用数据增强和用数据增强技术的条件下在一个小数据集上训练一个小的卷积神经网络。采用数据增强可以获得相当程度的改善,但是由于原始数据集毕竟太小,所以很难达到90%的预测准确度。本文我们将考虑如何在(已经在大数据集上训练过的)预训练模型的基础上,在小数据集上进一步训练得到最终模型的效果。原创 2022-01-03 14:42:35 · 13846 阅读 · 1 评论 -
深度学习笔记:利用数据增强在小数据集上从头训练卷积神经网络
上一篇我们搭建一个了小型卷积神经网络从头开始训练用于猫狗数据集的图像分类。仅利用了原始的猫狗数据集有25000张图片中的3000张图片(包括训练集和测试集)。实验表明存在严重的过拟合。考虑到我们只用了3000张图片,对于图像(大小为180*180*3)分类问题来说这个非常小的一个数据集,这个结果并不令人惊讶。在本篇中,我们来看看使用数据增强策略看看其效果如何。原创 2022-01-02 16:09:19 · 4647 阅读 · 0 评论 -
深度学习笔记:UnknownError: Failed to get convolution algorithm
“UnknownError: Failed to get convolution algorithm”:这个问题并没有大多数帖子中所讨论的那么高大上。可能仅仅是内存不够而已!原创 2022-01-01 18:04:15 · 1138 阅读 · 1 评论 -
深度学习笔记:在小数据集上从头训练卷积神经网络
本文先构建了一个小的卷积神经网络,在猫狗数据集的一个子集上从头开始训练。从结果来看,在训练集上可以达到接近于100%的accuracy,但是在验证集和测试集上只有不到80%。因此很明显存在严重的过拟合问题。此外还可以看出epoches设置为15是多余的,几乎在epoches等于5时就已经达到了验证集的accuracy的峰值。接下来将采用两种方法解决这个问题。原创 2021-12-31 17:57:30 · 5067 阅读 · 1 评论 -
深度学习笔记:tf.keras.preprocessing.image_dataset_from_directory运行错误
被tf.keras.preprocessing.image_dataset_from_directory逼疯了。。。 昨天刚写了一个博客,记录学习使用image_dataset_from_directory从目录中加载大型数据集的过程,觉得感觉不错。今天准备正式用用这个做一个深度学习模型训练实验,自信满满地开始,然后。。。遭到了暴击。。。先记录一下这个问题,不知道有没有人碰到过同样的问题。原创 2021-12-25 17:57:51 · 7029 阅读 · 8 评论 -
深度学习笔记:Tensorflow BatchDataset应用示例¶
对于小型玩具数据集(toy dataset),可以一次性完全加载进来进行处理。但是在现实中,深度学习往往都要涉及到超大的数据集,比如说像ImageNet这样的数据集你不可能一次性加载进来。即便你的深度学习服务器的内存巨大可以一次性加载,那也不是一个有效利用内存的好做法。tensorflow.data.Dataset模块提供了针对这种情况的有效的处理方法。本文简要介绍基于tensorflow.data.Dataset模块对大数据集的一些处理方法以及一些常见的问题及其解决方案。原创 2021-12-24 18:00:58 · 6657 阅读 · 0 评论 -
深度学习笔记:Keras模型的可视化
除了可以用model.summary()函数以文本列表的方式显示模型的基本信息,keras还提供了一个简单的将模型图示化的函数:keras.utils.plot_model(),让开发者能够直观地看到自己的模型长什么样子.原创 2021-12-15 16:37:13 · 3818 阅读 · 3 评论 -
深度学习笔记:用卷积神经网络进行MNIST手写数字识别
上一篇我们用全连接层(Dense layer)实现了一个分类器用于MNIST手写数字识别。但是由于MNIST的数据样本是28x28的图像,所以更适合于用卷积神经网络来实现它的识别任务。本文就来介绍如何构建一个简单的卷积神经网络用于MNIST手写数字识别。原创 2021-12-14 15:12:24 · 5613 阅读 · 1 评论 -
深度学习笔记:基于Keras库的MNIST手写数字识别
本文介绍基于Keras库创建一个最简单的神经网络模型进行MNIST手写数字识别的试验。麻雀虽小五脏俱全,模型虽然简单但是这个试验基本上覆盖了一个深度学习任务的完整流程中各主要的基本步骤。这是深度学习的一个“Hello, World”式的试验。以此为基础就可以通过添枝加叶探索深度学习世界啦。原创 2021-12-11 15:33:32 · 3776 阅读 · 0 评论