textCNN原理与实战

一、CNN原理

参考:https://www.zybuluo.com/hanbingtao/note/485480

1、激活函数——Relu

textCNN原理与实战

优势:

速度快

减轻梯度消失问题

稀疏性

2、思路

局部连接

权值共享

下采样

3、网络结构

textCNN原理与实战

1> 层结构

    卷积层,pooling层,全连接层

2>神经元

    卷积神经网络每层的神经元是按照三维排列的

3> filter

    Feature Maps通过filter获取,几套filter得到几个feature Maps

    注意:

4> pooling

     下采样

4、卷积计算

步幅为一:

textCNN原理与实战

textCNN原理与实战

步幅为二:

textCNN原理与实战

 

体现:

1、局部连接

2、权值共享

5、Pooling层计算

1) max pooling

textCNN原理与实战

2) Mean Pooling

   取个样本的平均值

5、训练

1)训练方法——反向传播算法

     利用链式求导计算损失函数对每个权重的偏导数(梯度),然后根据梯度下降公式更新权重。

2)参考

    https://www.zybuluo.com/hanbingtao/note/485480

 

二、分层softmax

1、神经网络分类例子

textCNN原理与实战

2、类别数据

     等于softmax的输入数和输出数

3、类别概率

    textCNN原理与实战输出商品各个类别上的拟合值

    textCNN原理与实战输出商品各个类别上的归一化概率值

4、分层softmax

    参考: http://qiancy.com/2016/08/17/word2vec-hierarchical-softmax/

    设想一下,当我们在训练模型时, 我们知道目标词x,但是我们却需要去求解所有的词,并求和。

1) 形式

  textCNN原理与实战

textCNN原理与实战

2) 依据

   依据训练样本数据中的单词出现的频率,构建起来的一棵Huffman tree ,频率越高, 节点越短.

3)目标词概率

textCNN原理与实战

4)参数更新

textCNN原理与实战

 

三、textCNN原理

1、模型结构

textCNN原理与实战

2、pooling

     采用max pooling

四、textCNN实战

参考:https://www.imooc.com/article/40868

           https://www.cnblogs.com/jiangxinyang/p/10207482.html

github: https://github.com/norybaby/sentiment_analysis_textcnn

1、系统

     centos

2、安装环境

     pip install Cython

     pip install  tensorflow

     pip install  word2vec

3、下载源码

     git clone https://github.com/norybaby/sentiment_analysis_textcnn.git

4、训练

     (python36) [super@mt-25-33 textcnn]$   python train.py 

5、错误

参考: https://blog.csdn.net/manduner/article/details/81103889

1) 问题:

textCNN原理与实战

2)原因:

TensorFlow版本升级后,它就无情的抛弃了FLAGS._parse_flags()这种用法,改成了用FLAGS.flag_values_dict()

3)解决

 用FLAGS.flag_values_dict()替换FLAGS._parse_flags()

 

 

 

上一篇:java-Spring ObjectPooling和线程阻塞


下一篇:【深度学习系列】卷积神经网络CNN原理详解(一)——基本原理(2)