![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
神经网络
文章平均质量分 62
校草的舍友
这个作者很懒,什么都没留下…
展开
-
word2vec思考:word2vec为什么不使用非线性激活函数?
word2vec不是为了做语言模型,它不需要预测得更准。另外,不使用非线性激活函数可以使函数更简单,加快网络训练,也会使训练出来的词大量线性相关,这正是我们需要的。原创 2021-02-16 20:31:11 · 461 阅读 · 0 评论 -
从零开始开发自己的类keras深度学习框架7:简易版word2vec
认真学习,佛系更博。前面几章基本介绍了全连接神经网络和卷积神经网络的原理已经开发过程,本章开始将写一些自然语言处理相关的知识。当然,自然处理领域的知识点比图像处理的要复杂、抽象,可能要花更多时间来研究。首先,我们来了解一下word2vec,其目的是将一个个的词语编码成具体的向量,因为我们的深度学习模型是不能直接处理文本数据的。关于词向量的研究做了很多,目前流传较广泛的有以下几种:基于字典的方法,比如大名鼎鼎的wordnet,人工成本较高、需要不断更新; 基于统计的方法,比如利用单词的马尔科夫分原创 2021-02-16 17:34:06 · 266 阅读 · 0 评论 -
从零开始开发自己的类keras深度学习框架6 :batch_normalization
认真学习,佛系更博。本章将详细介绍batch_normalization层,batch_normalization不仅可用在卷积层,也适用于全连接层;此外,需要注意,卷积层的batch_normalization是对channel维之外所有的维度作归一化操作,其原因我觉得比较合理的是这个:https://www.zhihu.com/question/269658514/answer/827941407我们先贴batch_normalization的代码:from enet.layers.ba.原创 2021-02-13 18:06:01 · 464 阅读 · 1 评论 -
从零开始开发自己的类keras深度学习框架5:实现卷积层
认真学习,佛系更博。前面我们已经实现了一个简单的全连接层的神经网络模型,本章将实现卷积神经网络,以及详细介绍其前向传播和反向传播(2种实现方法)的实现。有了全连接层的铺垫,卷积神经网络就变得更好理解,我们先将整个代码贴上,然后来详细讨论一下前向传播和反向传播:from enet.layers.base_layer import Layerfrom enet.optimizer import optimizer_dictfrom enet.utils import img2col, col2原创 2021-02-13 17:03:30 · 367 阅读 · 1 评论 -
从零开始开发自己的类keras深度学习框架4:实现sequential
认真学习,佛系更博。本章将介绍sequential的实现,并在结尾尝试搭建一个小型的深度学习模型;前面已经介绍了数据的载入、全连接层的实现、优化器和激活函数的实现,基本内容已经铺垫好,我们希望实现的sequential如下: # 两种搭建模型方法 # 1. 列表形式 model1 = Sequential([ Dense(kernel_size=64, activation="sigmoid", input_shape=(784, )),原创 2021-02-13 16:33:36 · 366 阅读 · 0 评论 -
从零开始开发自己的类keras深度学习框架3:实现优化器和激活函数
认真学习,佛系更博。上一章介绍了全连接层的实现和原理,本章将介绍优化器和激活函数的实现;首先,我们来实现SGD优化器,sgd是最简单的优化器,每次批量计算的梯度直接运用在神经网络参数上即可,在enet下新建一个模块optimizer,并新建文件sgd.py;import numpy as npclass SGD(object): """ momentum优化器 """ def __init__(self, **k_args): # pa原创 2021-02-13 16:06:24 · 194 阅读 · 0 评论 -
从零开始开发自己的类keras深度学习框架2 :实现全连接层
认真学习,佛系更博。上一章简单介绍了如何实现数据的读取功能,本章将详细介绍如何实现神经网络最基础的层:全连接层。全连接层的原理想必很多读者都接触过很多资料,比如链式法则,反向传播,梯度下降法等等。说来惭愧,博主也早早地接触过,确一直没有仔细推敲其中的原理,以至于一直对该网络层困惑了很久,其实静下心来仔细去研究一下,会发现内部原理也很简单直观,我们先来了解一下链式法则:我们知道,神经网络的很多操作都可以当作一个个独立的层,比如卷积层、全连接层、sigmoid激活层等,其原因在于,这些操作都可以当作原创 2021-02-13 15:44:26 · 456 阅读 · 0 评论 -
从零开始开发自己的类keras深度学习框架1 :实现数据载入模块
认真学习,佛系更博。本章将介绍如何实现数据的载入功能,该模块和其他模块较为独立,也最容易实现;因此本章内容只做简单介绍,不做过多说明;我们拿mnist作为示例,目标是将mnist数据转化为神经网络模型可以处理的数据。首先获取mnist原始图片数据,并保存在本地,获取mnist图片的方法见我另一篇博客:深度学习系列:从mnist数据集中提取mnist图片拿到图片数据后我们将其放入一个文件夹中,比如我放在项目的dataset目录内,下面有10个子目录,分别对应0-9十种类型的图片,接下来将实现数据处原创 2021-02-13 14:57:22 · 285 阅读 · 1 评论 -
从零开始开发自己的类keras深度学习框架
认真学习,佛系更博。最近抽空开发了一个基于numpy的简易版的神经网络框架,类似于keras的调用方法,该框架不强烈追求网络学习的效率,旨在更好地理解神经网络模型的原理;特此记录,也期待和别人分享;我们想实现的终极目标是:使用该框架可以方便的搭建、训练、预测数据的类别,如下面代码:if __name__ == '__main__': data_handler = ImageHandler("dataset", gray=True, flatten=False, use_scale=T原创 2021-02-13 14:28:17 · 249 阅读 · 1 评论