几个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)

建议使用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,:] #直接降维

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

  1. [阿里DIN]从模型源码梳理TensorFlow的形状相关操作

    [阿里DIN]从模型源码梳理TensorFlow的形状相关操作 目录 [阿里DIN]从模型源码梳理TensorFlow的形状相关操作 0x00 摘要 0x01 reduce_sum 1.1 reduc ...

  2. Oracle列操作(增加列,修改列,删除列)

    Oracle列操作 增加一列: alter table emp4 add test varchar2(10); 修改一列: alter table emp4 modify test varchar2( ...

  3. Oracle列操作引起的全表扫描

    首先是一种比较明显的情况: select * from table where column + 1 = 2 这里对column进行了列操作,加1以后,与column索引里的内容对不上,导致colum ...

  4. pandas列操作集锦

    列操作 pandas的列操作 数据准备: 增 将两张表合并到一起 pd.concat([page_001,page_002]).reset_index(drop=True) 默认从上到下合,如果想从左 ...

  5. Notepad++ 列操作

    在网上找到一篇关于socket编程的文章,想把其中的代码直接拷贝下来运行测试,但是人家网站做的不够人性化,每行的开头都有行号,直接拷贝就要一行行的删除,甚是麻烦,想到linux下的vi编辑器可以完成列 ...

  6. python excel操作 练习-#操作单列 #操作A到C列 #操作1到3行 #指定一个范围遍历所有行和列 #获取所有行 #获取所有列

    ##操作单列#操作A到C列#操作1到3行#指定一个范围遍历所有行和列#获取所有行#获取所有列 #coding=utf-8 from openpyxl import Workbook wb=Workbo ...

  7. IDEA04 工具窗口管理、各种跳转、高效定位、行操作、列操作、live template、postfix、alt enter、重构、git使用

    1 工具窗口管理 所有的窗口都是在view -> tools windows 下面的,这些窗口可以放在IDEA的上下左右各个位置:右键某个窗口后选择move to 即可进行位置调整 2 跳转 2 ...

  8. iView学习笔记(三):表格搜索,过滤及隐藏列操作

    iView学习笔记(三):表格搜索,过滤及隐藏某列操作 1.后端准备工作 环境说明 python版本:3.6.6 Django版本:1.11.8 数据库:MariaDB 5.5.60 新建Django ...

  9. HTML表格跨行、跨列操作(rowspan、colspan)

    转自:https://blog.csdn.net/u012724595/article/details/79401401 一般使用<td>元素的colspan属性来实现单元格跨列操作,使用 ...

随机推荐

  1. 【原】小玩node+express爬虫-1

    最近开始重新学习node.js,之前学的都忘了.所以准备重新学一下,那么,先从一个简单的爬虫开始吧. 什么是爬虫 百度百科的解释: 爬虫即网络爬虫,是一种自动获取网页内容的程序.是搜索引擎的重要组成部 ...

  2. jquery1.7.2的源码分析(四)$.Deferred(2)

    jQuery.Callbacks = function( flags ) { // Convert flags from String-formatted to Object-formatted // ...

  3. 前端React开发入门笔记

    什么是React React是一个JavaScript库,是由FaceBook和Instagram开发的,主要用于用户创建图形化界面. Hello world <!DOCTYPE html> ...

  4. 第一章 Part 2/2 Git 一览

    被跟踪文件(Tracked files) 被跟踪文件是 Git 管理的工作目录 (存储库) 中的文件.当你添加新文件或使更新现有文件时,Git都会跟踪这些文件变化.在某个时间点,你将通过命令将这些文件 ...

  5. 阿里笔试题:在n个人中找明星

    题目描述:有N个人,其中一个明星和n-1个群众,群众都认识明星,明星不认识任何群众,群众和群众之间的认识关系不知道,现在如果你是机器人R2T2,你每次问一个人是否认识另外一个人的代价为O(1),试设计 ...

  6. Mysql基础(一)

    Mysql的历史度娘上一堆,就不再介绍了. 本文依照此路径学习Mysql数据库:数据库->表->数据 首先启动Mysql服务,然后通过控制台命令登入root账户输入密码回车 C:\User ...

  7. python --> 递归 以及装饰器

    一.递归知识 函数迭套执行,逐层执行之后,满足某个条件之后就会停止执行,将return值返回上层的函数,上层函数再逐层返回,最终返回给最初始函数. 递归在斐波那契数列的应用[斐波那契数列特点:前两个数 ...

  8. JS中用apply、bind实现为函数或者类传入动态个数的参数

    为纪念10年没写blog,第一篇博文就以这样一个有趣的窍门开始吧 -___- 在ES5中,当我们调用一个函数时,如果要传入的参数是根据其他函数或条件判断生成的,也就是说不确定会传入多少个参数时,在不改 ...

  9. 虚函数的使用 以及虚函数与重载的关系, 空虚函数的作用,纯虚函数->抽象类,基类虚析构函数使释放对象更彻底

    为了访问公有派生类的特定成员,可以通过讲基类指针显示转换为派生类指针. 也可以将基类的非静态成员函数定义为虚函数(在函数前加上virtual) #include<iostream> usi ...

  10. IOS与Android APP界面设计规范要点

    IOS篇 一.尺寸及分辨率 iPhone界面尺寸:320*480.640*960.640*1136 iPhone6:4.7英寸(1334×750),iPhone6 Plus:5.5英寸(1920×10 ...