2016-12-12

来源:互联网 发布:杭州淘宝化妆师招聘 编辑:程序博客网 时间:2024/04/29 01:40
主要工作内容:
一. tensorflow 学习
1.构图节点:

构图过程中的节点主要有三种类型,(tensor, operation, variable), 其中tensor可以看作操作的输出,数据的流动,其中输入/输出节点也可看作是节点的一种。operation定义的是计算操作,variable用于读取/存储变量这三个都有相应的name属性,可以自己定义,若 没有自己定义则为默认的名字,其中tensor是最后的操作名,operation是操作名,variable是variable。
2. 命名空间与变量空间:
tf.name_scope(“name”) 与 tf. variable_scope("name"), 这两者的相同点都是构建一个命名空间,让在其空间中的元素能够继承相应空间的名字。不同点是name_scope是针对操作的命名,对于变量来说,Variable()定义的变量会继承其空间名字,而get_Variable()则会忽略空间名字。而variable_scope可以看作是name_scope的加强版,不光操作,无论哪种方法所得到的变量也会继承其空间名字。可以参考:
3. 变量共享:
Variable() 与 get_variable()的区别,两者都返回变量类型,不同的是,Variable是普通的变量定义函数,而get_variable()主要用来变量共享的,也就是如果Variable()不涉及到变量重用的情况,因为如果用Variable()定义两个名字相同的变量,如a = tf.Variable(1, name = 'a')和b = tf.Variable(1, name = 'a'), 此时a.name = a, 而b.name = a_1,也就是以后会有a_2等等,不会有冲突的现象,这种情况对操作的定义也一样。但对于tf.get_variable()来说,如果变量的名字相同,则会出现冲突的情况,会报错,此时需要设置重用,设置重用后get_variable()会去找已有的变量,如果找不到则会报错。设置重用有两种方式,第一种方式是用 tf.get_variable_scope().reuse_variables() 而且一旦设置为true后不能改回false, 需要在不同的variable_scope操作才可以, 因此在想重用的时候最好在一个variable_scope()中重用最好。第二种定义重用的方式是通过在定义variable_scope空间的时候使用,例如:with tf.variable_scope("foo", reuse=True),此时在此空间中的所有变量都是来找已有的变量,但跳出该scope后还是之前的reuse情况。具体的情况可以参考:http://wiki.jikexueyuan.com/project/tensorflow-zh/how_tos/variable_scope/index.html
12-27日补充说明:1. 需要注意的是Variable()与get_variable()不会冲突,也就是说在用a = Variable(1,name='a')函数执行后如果再执行b=tf.get_varialbe('a', 1)则会新建一个name='a_1'的变量,因此如果要考虑重用的情况只需要用get_variable()就可以。2. 当reuse打开后就不可以关闭了,因此如果在上层scope打开了,在下层用reuse=false是不能把他关闭的。所以总体来说如果要重用,利用上层关闭,内层打开,而在决定打开之时一定要确定之后一直会重用,直到跳出该范围。3.在scope()内部设置重用与用get-variable().resue_variable()是后者更灵活一些,因为在一个scope中可能刚开始并不想重用,但之后想重用了就用第二个函数。

二. short text 相似度文章调研
下载了两篇文章,一篇是比较旧的关于short text相似度计算的文献总结:A comparative study of two short text semantic similarity measures. 另一篇是利用word embedding来计算相似度: short text similarity with word Embedding.

0 0
原创粉丝点击