2016-12-19
2016-12-19 18:02
134 查看
今天主要的工作有以下几部分:
1. 熟悉运行word2vec_basic版本,tf.nn.nce_loss()函数返回的是batch的loss值,而因为词表太大不太适合做全局的softmax, 因此此处采取的是采样的方法,也就是经过一个正样本和多个随机采样的负样本来计算loss值,此处用的是sigmoid_cross_entropy_with_logits()函数,因此在计算交叉熵的时候是每一个维度分别看作一个二值的概率分布。
2. 在训练的时候代码中输入的embedding参数和输出的embedding并不是相同的参数,而是分开训练的。为了看两者的区别,分别做了两个不同的实验,一个是输入输出参数分别训练,结果如上方图所示,另外一个则共用参数,结果如下方图所示。
3. word2vec是更复杂版本的,有多线程和处理大规模数据的操作。需要注意的是tensorflow中op用c语言来写,在编译的时候会把相应的c语言代码编入相应的库中可以调用。
4. 看了短文本相似度一些最近的文章,大概了解到之前的利用知识库的方法主要先计算不同词在知识库中的距离,之后再计算短文本之间的距离。而利用深度学习的方法也类似,是把词表示向量,之后再用不同的方法来计算短文本的距离,比如(加权平均,求和,卷积,RNN)等等。
1. 熟悉运行word2vec_basic版本,tf.nn.nce_loss()函数返回的是batch的loss值,而因为词表太大不太适合做全局的softmax, 因此此处采取的是采样的方法,也就是经过一个正样本和多个随机采样的负样本来计算loss值,此处用的是sigmoid_cross_entropy_with_logits()函数,因此在计算交叉熵的时候是每一个维度分别看作一个二值的概率分布。
2. 在训练的时候代码中输入的embedding参数和输出的embedding并不是相同的参数,而是分开训练的。为了看两者的区别,分别做了两个不同的实验,一个是输入输出参数分别训练,结果如上方图所示,另外一个则共用参数,结果如下方图所示。
3. word2vec是更复杂版本的,有多线程和处理大规模数据的操作。需要注意的是tensorflow中op用c语言来写,在编译的时候会把相应的c语言代码编入相应的库中可以调用。
4. 看了短文本相似度一些最近的文章,大概了解到之前的利用知识库的方法主要先计算不同词在知识库中的距离,之后再计算短文本之间的距离。而利用深度学习的方法也类似,是把词表示向量,之后再用不同的方法来计算短文本的距离,比如(加权平均,求和,卷积,RNN)等等。
相关文章推荐
- 动态规划_0-1背包问题
- [置顶] 机器学习决策树算法解决图像识别
- JAVAWEB学习总结 HttpServletResponse对象(一)
- Lightoj1122 【数位DP】
- 协程
- RESTful
- Spring Boot 静态资源处理
- 【linux基础】19、系统初始化流程
- Hiberante3.6的使用入门
- Mysql读写分离
- k近邻算法及python实现
- ZIP4J---ZIP文件压缩与解压缩学习
- Python正则表达式超基础版
- java TimerTask定时器
- InstantClient安装配置
- pdf书籍下载
- List
- 位运算之不使用任何比较判断比较两个数大小问题
- JavaScript中的console.assert()函数介绍
- Android studio 修改 app的 build.gradle实现同一APP不同版本同时存在(同一APP安装N次)