一、CNN原理
参考:https://www.zybuluo.com/hanbingtao/note/485480
1、激活函数——Relu
优势:
速度快
减轻梯度消失问题
稀疏性
2、思路
局部连接
权值共享
下采样
3、网络结构
1> 层结构
卷积层,pooling层,全连接层
2>神经元
卷积神经网络每层的神经元是按照三维排列的
3> filter
Feature Maps通过filter获取,几套filter得到几个feature Maps
注意:
4> pooling
下采样
4、卷积计算
步幅为一:
步幅为二:
体现:
1、局部连接
2、权值共享
5、Pooling层计算
1) max pooling
2) Mean Pooling
取个样本的平均值
5、训练
1)训练方法——反向传播算法
利用链式求导计算损失函数对每个权重的偏导数(梯度),然后根据梯度下降公式更新权重。
2)参考
https://www.zybuluo.com/hanbingtao/note/485480
二、分层softmax
1、神经网络分类例子
2、类别数据
等于softmax的输入数和输出数
3、类别概率
输出商品各个类别上的拟合值
输出商品各个类别上的归一化概率值
4、分层softmax
参考: http://qiancy.com/2016/08/17/word2vec-hierarchical-softmax/
设想一下,当我们在训练模型时, 我们知道目标词x,但是我们却需要去求解所有的词,并求和。
1) 形式
2) 依据
依据训练样本数据中的单词出现的频率,构建起来的一棵Huffman tree ,频率越高, 节点越短.
3)目标词概率
4)参数更新
三、textCNN原理
1、模型结构
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) 问题:
2)原因:
TensorFlow版本升级后,它就无情的抛弃了FLAGS._parse_flags()这种用法,改成了用FLAGS.flag_values_dict()
3)解决
用FLAGS.flag_values_dict()替换FLAGS._parse_flags()