Tensorflow学习笔记(一)

batch_size = tf.size(labels)
labels = tf.expand_dims(labels, 1)
indices = tf.expand_dims(tf.range(0, batch_size, 1), 1)
concated = tf.concat(1, [indices, labels])
onehot_labels = tf.sparse_to_dense(
    concated, tf.stack([batch_size, NUM_CLASSES]), 1.0, 0.0)

以上这段代码将类标识转换为onehot型的类标识。
假设batch_size大小为5,NUM_CLASSES为10。
初始的labels=[3,5,2,9,6]
则第二行代码后labels的shape变为(5,1)

labels=[[3],[5],[2],[9],[6]]

第三行产生的indices的shape也为(5,1)

indices=[[0],[1],[2],[3],[4]]

第四行产生的concated

concated=[[0,3],[1,5],[2,2],[3,9],[4,6]]

最后的onehot_labels

onehot_labels=[[0,0,0,1,0,0,0,0,0,0],
               [0,0,0,0,0,1,0,0,0,0],
               [0,0,1,0,0,0,0,0,0,0],
               [0,0,0,0,0,0,0,0,0,1]
               [0,0,0,0,0,0,1,0,0,0]]

函数解释
tf.expand_dims(Tensor, dim)
在张量Tensor的第dim维插入一个维度。

sess = tf.InteractiveSession()
labels = [1,2,3]
x = tf.expand_dims(labels, 0)
print(sess.run(x))
x = tf.expand_dims(labels, 1)
print(sess.run(x))
#>>>[[1 2 3]]
#>>>[[1]
#    [2]
#    [3]]

tf.concat(concat_dim, values, name=’concat’)
除去name参数用以指定该操作的name,与方法有关的一共两个参数:
第一个参数concat_dim:必须是一个数,表明在哪一维上连接

t1 = [[1, 2, 3], [4, 5, 6]]  
t2 = [[7, 8, 9], [10, 11, 12]]  
tf.concat(0, [t1, t2]) == > [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]] 

t1 = [[1, 2, 3], [4, 5, 6]]  
t2 = [[7, 8, 9], [10, 11, 12]]  
tf.concat(1, [t1, t2]) ==> [[1, 2, 3, 7, 8, 9], [4, 5, 6, 10, 11, 12]]   

tf.sparse_to_dense(sparse_indices, output_shape, sparse_values, default_value, name=None)
除去name参数用以指定该操作的name,与方法有关的一共四个参数:
第一个参数sparse_indices:稀疏矩阵中那些个别元素对应的索引值。有三种情况:

 sparse_indices是个数,那么它只能指定一维矩阵的某一个元素

 sparse_indices是个向量,那么它可以指定一维矩阵的多个元素

 sparse_indices是个矩阵,那么它可以指定二维矩阵的多个元素

第二个参数output_shape:输出的稀疏矩阵的shape

第三个参数sparse_values:个别元素的值。分为两种情况:

 sparse_values是个数:所有索引指定的位置都用这个数

 sparse_values是个向量:输出矩阵的某一行向量里某一行对应的数(所以这里向量的长度应该和输出矩阵的行数对应,不然报错)

第四个参数default_value:未指定元素的默认值,一般如果是稀疏矩阵的话就是0了

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值