Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Tensorflow中有没有一种有效的方法来选择张量的5个区域?_Tensorflow - Fatal编程技术网

在Tensorflow中有没有一种有效的方法来选择张量的5个区域?

在Tensorflow中有没有一种有效的方法来选择张量的5个区域?,tensorflow,Tensorflow,例如,给定一个形状为[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] -

例如,给定一个形状为[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)