Tensorflow- tensor的列操作

几个point

  1. [:,i]类似python直接的index 列操作是可行的,
  2. 注意i不能是variable,如果是使用slice
  3. slice操作会保持和输入tensor一样的shape 返回
    而1对应的列操作会降维
  4. Slice 使用-1 表示该维度元素全选类似:

?
?

import tensorflow as tf

sess = tf.InteractiveSession()

In?[12]:

t = tf.constant([[1, 2, 3], [4, 5, 6]], dtype=tf.float32)

In?[19]:

?
?

tf.expand_dims(t, 1).eval()

Out[19]:

array([[[ 1., 2., 3.]],

[[ 4., 5., 6.]]], dtype=float32)

In?[14]:

t.eval().shape

Out[14]:

(2, 3)

In?[18]:

tf.expand_dims(t, 1).eval().shape

Out[18]:

(2, 1, 3)

In?[17]:

tf.concat(1, [tf.zeros([2,1]), t]).eval()

Out[17]:

array([[ 0., 1., 2., 3.],
[ 0., 4., 5., 6.]], dtype=float32)

In?[20]:

?
?

t[:,1].eval()

Out[20]:

array([ 2., 5.], dtype=float32)

In?[26]:

?
?

tf.reshape(t[:,1],[-1, 1]).eval()

Out[26]:

array([[ 2.],
[ 5.]], dtype=float32)

In?[25]:

tf.reshape(t[:,1],[-1, 1]).eval().shape

Out[25]:

(2, 1)

In?[34]:

tf.expand_dims(t[:,1],1).eval()

Out[34]:

array([[ 2.],
[ 5.]], dtype=float32)

In?[28]:

tf.expand_dims(t[:,1],1).eval().shape

Out[28]:

(2, 1)

In?[29]:

?
?

tf.gather(t, 1).eval()

Out[29]:

array([ 4., 5., 6.], dtype=float32)

In?[35]:

tf.slice(t, [0, 1], [-1, 1]).eval()

Out[35]:

array([[ 2., 3.],
[ 5., 6.]], dtype=float32)

?
?

来自 <http://172.20.72.11:8888/notebooks/ipynotebook/expand-dim.ipynb>

?
?

建议使用slice,不过有的时候希望自动降维的时候
直接用[:,]操作更方便比如

输入tensor

#[batch_size, num_negs, emb_dim]

neg_comment_feature = tf.reduce_mean(neg_comment_feature,2)

?
?

下面希望

#[batch_size, emb_dim] <= [batch_size, num_negs, emb_dim]

可能的几种方式

for i in xrange(num_negs):

neg_comment_feature_i = tf.reshape(tf.slice(neg_comment_feature, [0, i, 0], [-1, 1, emb_dim]), [-1, emb_dim])

neg_comment_feature_i = tf.reshape(tf.slice(neg_comment_feature, [0, i, 0], [-1, 1, -1]), [-1, emb_dim])

neg_comment_feature_i = neg_comment_feature[:,i,:] #直接降维

?
?

时间: 2024-10-09 03:59:07

Tensorflow- tensor的列操作的相关文章

Notepad++ 列操作

在网上找到一篇关于socket编程的文章,想把其中的代码直接拷贝下来运行测试,但是人家网站做的不够人性化,每行的开头都有行号,直接拷贝就要一行行的删除,甚是麻烦,想到linux下的vi编辑器可以完成列操作,windows下应该也有相关软件可以胜任.想起实习时候用过的一款功能强大且开源免费的编辑器Notepad++,从网上找到如下解决方法,由于不知原始出处,这里不再注明. [列编辑] 通常我们编辑文件的方式是行编辑,Notepad++还有一种列编辑模式.顾名思义,列编辑就是能够按列对文件进行编辑,

Sql Server 在已知表中插入、删除、修改某一列操作

--1.向已有表中增加一列 ALTER TABLE TableName ADD ColumnName VARCHAR(20) NULL --2.删除表中的某一列 ALTER TABLE TableName DROP COLUMN ColumnName --3.修改某一列的数据类型 ALTER TABLE TableName ALTER COLUMN ColumnName INT 2.查询当年或者当月的数据 1.查询当年的数据 SELECT * FROM UserInfo WHERE YEAR(R

notepad++ 使用(添加每行首尾字符,列操作)

对每一行的首尾添加字符 ctrl+H 弹出对画框,勾选正则表达式,首部添加字符则在查找目标中填写字符^ ,如果是尾部则填写 $ .然后在替换为中写想要添加的字符即可. 对于列操作,Alt+c,为当前鼠标所在列操作,可以添加字符等. 也可以点击Alt键,用鼠标拖动,选择要操作的列.然后在编辑菜单中选择要进行的操作即可.

notepad++ 中列操作

通常我们编辑文件的方式是行编辑,Notepad++还有一种列编辑模式.顾名思义,列编辑就是能够按列对文件进行编辑,操作方法如下: 1. 同时编辑连续的列区域:鼠标先在要进行列编辑的起点点击,再同时按shift+alt不放,鼠标在要进行列编辑的结尾区域点击. 2. 在起点到文档结尾所有列插入数据:鼠标先在要插入数据的位置点击,再按alt+c,在弹出的对话框中输入要插入的数据,确定后就在后面所有列插入数据了. 3. 同时在不连续的列插入数据:先在菜单:设置-首选项-编辑中,选中"multi-edit

mooc-IDEA 列操作--005

十一.IntelliJ IDEA -列操作 实例:根据HTTP请求JSON文件,生成一个枚举类 Step1:创建一个枚举类,把要转换的JSON串粘贴进来. 最终要实现效果 Step2:选中第一个100:"Continue"中的冒号,任意一个冒号也均可 Step3:选择Edit->Find->Select All Occurrences...[ctrl+alt+shif+j],此时所有同类型的冒号均处于选中状态 Step4:同类型,一起操作 [1]将单词转大写,选中单词,光标

sparksql系列(三) sparksql列操作、窗口函数、join

一:Sparksql列操作 初始化SparkContext及数据: import java.util.Arrays import org.apache.spark.SparkConfimport org.apache.spark.api.java.JavaSparkContextimport org.apache.spark.sql.{DataFrame, Row, SparkSession, functions}import org.apache.spark.sql.functions.{co

[TensorFlow]Tensor维度理解

http://wossoneri.github.io/2017/11/15/[Tensorflow]The-dimension-of-Tensor/ Tensor维度理解 Tensor在Tensorflow中是N维矩阵,所以涉及到Tensor的方法,也都是对矩阵的处理.由于是多维,在Tensorflow中Tensor的流动过程就涉及到升维降维,这篇就通过一些接口的使用,来体会Tensor的维度概念.以下是个人体会,有不准确的请指出. tf.reduce_mean reduce_mean( inp

Emacs列操作

也可以在Emacs中用C-x C-h列出全部命令,查找C-x r c,所有列模式命令都是以C-x r开始的 C-x r [email protected]                    point-to-registerC-x r SPC                    point-to-registerC-x r +        increment-registerC-x r b        bookmark-jumpC-x r c        clear-rectangl

NKOI 1321--数列操作问题(裸BIT)

数列操作问题 Time Limit:10000MS  Memory Limit:65536KTotal Submit:276 Accepted:149 Case Time Limit:1000MS Description 假设有一列数{Ai}(1≤i≤n),支持如下两种操作: 将Ak的值加D.(k, D是输入的数) 输出As+As+1+…+At.(s, t都是输入的数,S≤T) Input 第一行一个整数n, 第二行为n个整数,表示{Ai}的初始值≤10000. 第三行为一个整数m,表示操作数