第一句子网 - 唯美句子、句子迷、好句子大全
第一句子网 > embedding.assign(embedding_input)的解读

embedding.assign(embedding_input)的解读

时间:2020-01-02 23:14:10

相关推荐

embedding.assign(embedding_input)的解读

1.这个问题是来自Tensorboard可视化过程中

2.embedding.assign(embedding_input)这个语句的用法是什么?

简单的讲,就是把embedding_input赋值给embedding,当然这里的量全是tensor

那为什么不使用简单的embedding = embedding_input呢?

因为一般来讲,完整的式子是:

assignment = embedding.assign(embedding_input)

表达的意思是:

用被embedding_input赋值的embedding传给assignment

这一个等式完成了多种运算,根据下面我给出的比较代码可以看出,sess.run(embedding)后发现,embedding的值也变了。

这其实和我们传统意义上对tensor的操作是不同的,比如tf.reshape()或embedding.reshape()

这种类型的语句并不会改变原来tensor的shape,而是通过

embedding = embedding.reshape()的形式间接改变变量shape的。

3.embedding.assign(embedding_input)与tf.assign(embedding ,embedding_input)是等效的操作

4.最后贴上这几个的对比代码(有详解):

import tensorflow as tfimport numpy as np# assign用法embedding_size = 3embedding = tf.Variable(tf.zeros([1024, embedding_size]), name="test_embedding")embedding_input = tf.Variable(tf.constant(1.0, shape=(1024, embedding_size)))assignment = embedding.assign(embedding_input) # 将embedding_input赋给embedding,然后embedding间接传给了assignmenta = np.random.random(size=[1024, embedding_size]) # 建立实际feed值sess = tf.Session() # 建立会话b = sess.run(assignment, feed_dict={embedding_input: a}) # 执行给b赋值的功能,注意assignment仍是tensorprint(b)c = sess.run(embedding)print(c) # 说明assign的操作可以让embedding的值改变# 换用tf.assign()也可以embedding_size = 3embedding = tf.Variable(tf.zeros([1024, embedding_size]), name="test_embedding")embedding_input = tf.Variable(tf.constant(1.0, shape=(1024, embedding_size)))assignment = tf.assign(embedding, embedding_input) # 将embedding_input赋给embedding,然后embedding间接传给了assignmenta = np.random.random(size=[1024, embedding_size]) # 建立实际feed值sess = tf.Session() # 建立会话b = sess.run(assignment, feed_dict={embedding_input: a}) # 执行给b赋值的功能,注意assignment仍是tensorprint(b)# 如果在这里将上面的会话结束,则所有的值都会被清空# sess.close()c = sess.run(embedding)print(c) # 说明assign的操作可以让embedding的值改变# 对比下如果是像tf.reshape的函数,会改变吗#%%import tensorflow as tfembedding_size = 3embedding = tf.zeros([1024, embedding_size], name="test_embedding")tf.reshape(embedding, shape=(32, 32, embedding_size))sess = tf.Session() # 建立会话array = sess.run(embedding)print(array.shape)# 实验结果表明,embedding的shape并不会变为32,32,3#%%# 其实直接赋值也可以embedding_size = 3# embedding = tf.Variable(tf.zeros([1024, embedding_size]), name="test_embedding")embedding_input = tf.Variable(tf.constant(1.0, shape=(1024, embedding_size)))# assignment = embedding.assign(embedding_input) # 将embedding_input赋给embedding,然后embedding间接传给了assignmentassignment = embedding_inputa = np.random.random(size=[1024, embedding_size]) # 建立实际feed值sess = tf.Session() # 建立会话b = sess.run(assignment, feed_dict={embedding_input: a}) # 执行给b赋值的功能,注意assignment仍是tensorprint(b)

5.本人现在的研究方向是:图像的语义分割,如果有志同道合的朋友,可以组队学习

haiyangpengai@

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。