tensorflow - 有没有一种有效的方法可以在 Tensorflow 中选择 5 个张量区域?
问题描述
例如,给定一个形状为 [28, 28] 的张量 m。
我想用张量随机选择五个区域,每个区域的形状是[3, 3]。
然后,我想修改这些区域的值。
解决方案
一种解决方案是在循环内随机提取:
import random
tensor = tf.ones(shape=(28,28))
desired_shape = (3,3)
dim1 = random.randint(0,tensor.shape[0] - desired_shape[0])
dim2 = random.randint(0,tensor.shape[1] - desired_shape[1])
extracted_tensor = tensor[dim1:dim1+desired_shape[0]][:,dim2 + desired_shape[1]]
首先导入随机模块并创建一个(或使用您的)张量。设置你想要的形状。然后创建两个随机变量,每个维度一个,并通过子列表提取张量。
但是,请记住,你不能像这个线程所说的那样在 tensorflow 中为张量赋值。
要解决这个问题,首先将其转换为 numpy 数组,更改值并再次将其转换为张量,因此这将是您问题的解决方案。
np_arr = tensor.numpy()
for i in range(5):
dim1 = random.randint(0,tensor.shape[0] - desired_shape[0])
dim2 = random.randint(0,tensor.shape[1] - desired_shape[1])
np_arr[dim1:dim1+desired_shape[0]][:,dim2 + desired_shape[1]] = [1,2,3] # any value
new_tens = tf.convert_to_tensor(np_arr)
推荐阅读
- forms - 如何为 Web 界面使用表单和 url 参数的嵌入式设备设置 nginx 反向代理?
- javascript - 使用 for .. of 循环向所有按钮添加相同的事件侦听器
- graphql - AWS AppSync 错误:模板转换产生空响应
- laravel - 仅限管理员访问
- javascript - 正则表达式匹配日期中的数字,但不应该
- java - 如何生成 AWS 格式的跟踪 ID
- .net - 追加到文件开头
- graphql - 需要身份证吗!对于 GraphQL 架构中的所有类型?
- c# - 为多个条件实现按逻辑排序以对最终结果排序的问题
- javascript - 根据约翰逊规则对行进行排序