python - 优雅的乘法 tf.range()
问题描述
我有一个 (BatchSize X 1) 个数字的张量,介于 0 到 9 之间,例如:
3
4
2
.
.
.
2
我需要从每个数字创建一个新的张量,从数字开始并递减直到数字 - 9。例如,对于数字 3,我创建一个张量:
3 2 1 0 -1 -2 -3 -4 -5 -6
这可以使用单个来完成:
tf.range(3,3-9,1)
我需要为整个张量做这件事,以创建一个新的张量(按照上面的例子):
3 2 1 0 -1 -2 -3 -4 -5 -6
4 3 2 1 0 -1 -2 -3 -4 -5
2 1 0 -1 -2 -3 -4 -5 -6 -7
. . . . . . . . . .
. . . . . . . . . .
. . . . . . . . . .
2 1 0 -1 -2 -3 -4 -5 -6 -7
一种选择是以迭代的方式进行,但这需要我将批量大小硬编码到循环中,我试图避免这种情况。
任何关于一个好的优雅解决方案的想法都将受到欢迎。
解决方案
tf.range(10)
您可以通过正确重塑张量来对张量进行外部减法:
import tensorflow as tf
tf.InteractiveSession()
a = tf.constant([3,4,2,2])
b = tf.reshape(a, (-1,1)) - tf.range(10)
b.eval()
#array([[ 3, 2, 1, 0, -1, -2, -3, -4, -5, -6],
# [ 4, 3, 2, 1, 0, -1, -2, -3, -4, -5],
# [ 2, 1, 0, -1, -2, -3, -4, -5, -6, -7],
# [ 2, 1, 0, -1, -2, -3, -4, -5, -6, -7]], dtype=int32)
推荐阅读
- reactjs - 持续部署 - 部署前在前端修改后端 url
- python - Selenium WebDriverException 'chromedriver.exe' 需要在 PATH 中
- java - McEliece 执行中的错误填充
- docker - Docker 容器内的 Cronjob 不运行
- javascript - 电话号码的正则表达式模式号码问题
- c++ - 在 C++ 中设计参数化结构
- javascript - Google 表格 API JavaScript:使用身份验证访问表格
- python - 从磁盘读取文件时批量生成生成器数据就像加载整个数据一样堆积在内存中
- php - 我可以用 mysql php 和表结果来解决这个问题吗?
- sqlite - 更新或转换 sqlite 数据库中的日期时间值