tensorflow创建动态形状的tensor

tensorflow 创建 tensor 的时候,可以用 scalar 的 tf.Tensor 指定形状,有点类似于 pytorch 的动态特性?
这在处理形状涉及 batch 那维的具体大小的时候(通常在 placeholder 中设为 None)有用,如 tensorflow实现kNN contrastive loss 中的 knn mask 就有类似用法。
例子如下:

Code

import tensorflow as tf

a = tf.placeholder("float32", [None])  # 长度未知
b = tf.placeholder("float32", [None])  # 长度未知


# 用 `tf.shape(x)[0]` 而不是 `x.shape[0]`
n = tf.shape(a)[0]
m = tf.shape(b)[0]

c = tf.zeros([n, m])  # 用动态长度指定形状
c_shape = tf.shape(c)

with tf.Session() as sess:
    print(sess.run(c_shape,
                   feed_dict={a: [1, 2, 3],
                              b: [4, 5]}))

输出:

[3 2]

P.S.

我猜,pytorch 里能推迟到运行时才确定的形状信息,讲道理在 tensorflow 里估计也行?

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值