在Tensorflow中有没有一种有效的方法来选择张量的5个区域?
例如,给定一个形状为[28,28]的张量m 我想用张量随机选择五个区域,每个区域的形状是[3,3]在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] -
然后,我想修改这些区域的值。一种解决方案是在循环内随机抽取:
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)