如何从形状 (100,24,24,6) 的输入指向要处理的最后一个通道维度,即 (6,)?
How to point from the inputs of shape (100,24,24,6) the last channel dimension i.e (6,) to be worked on?
我正在尝试使用 tf.map_fn() ,其中我的元素应该指向我输入的通道维度(形状 = 100,24,24,6),所以我的元素应该是list/tuple 个张量,指向或访问输入的通道维度 (6) 的值。我试图通过以这种方式制作 for 循环来做到这一点:
@tf.function
def call(self, inputs, training=True):
elems = []
for b in inputs:
for h in b:
for w in h:
for c in w:
elems.append(c)
changed_inputs = tf.map_fn(self.do_mapping, elems)
return changed_inputs
我试图在 self.do_mapping 中实现的是,它正在使用键和 return 值进行字典查找字典 (vmap) 的值。字典 vmap 是通过访问层的输出并仅附加层输出的通道维度的相似值来制作的,因此字典中的键是 6 的元组(作为通道维度的大小)tf.tensorobjects 和字典的值是我保留的计数。字典是这样编的:
value = list(self.get_values())
vmap = {}
cnt = 0
for v0 in value:
for v1 in v0:
for v2 in v1:
for v3 in v2:
v = tuple(v3)
if v not in vmap:
vmap[v]=cnt
cnt+=1
do_mapping 函数是:
@tf.function
def do_mapping(self,pixel):
if self._compression :
pixel = tuple(pixel)
enumerated_value=self._vmap.get(pixel)
print(enumerated_value)
print(tf.shape(pixel))
exit()
return enumerated_value
如果我现在尝试使用 tf.map_fn 尝试将元素指向通道维度,那么我会收到以下错误:(ValueError: elems 中的元素必须是 1+ 维张量,而不是标量).请帮助我了解如何为我的案例使用 tf.map_fn ?提前谢谢你
首先,不用 for 循环(为了效率尽量避免),你可以这样重塑:
elems = tf.reshape(inputs,-1)
其次,你到底想做什么? “它不起作用”是什么意思?错误信息是什么?什么是 self.do_mapping
?
最佳,
凯文
我正在尝试使用 tf.map_fn() ,其中我的元素应该指向我输入的通道维度(形状 = 100,24,24,6),所以我的元素应该是list/tuple 个张量,指向或访问输入的通道维度 (6) 的值。我试图通过以这种方式制作 for 循环来做到这一点:
@tf.function def call(self, inputs, training=True):
elems = []
for b in inputs:
for h in b:
for w in h:
for c in w:
elems.append(c)
changed_inputs = tf.map_fn(self.do_mapping, elems)
return changed_inputs
我试图在 self.do_mapping 中实现的是,它正在使用键和 return 值进行字典查找字典 (vmap) 的值。字典 vmap 是通过访问层的输出并仅附加层输出的通道维度的相似值来制作的,因此字典中的键是 6 的元组(作为通道维度的大小)tf.tensorobjects 和字典的值是我保留的计数。字典是这样编的:
value = list(self.get_values())
vmap = {}
cnt = 0
for v0 in value:
for v1 in v0:
for v2 in v1:
for v3 in v2:
v = tuple(v3)
if v not in vmap:
vmap[v]=cnt
cnt+=1
do_mapping 函数是:
@tf.function
def do_mapping(self,pixel):
if self._compression :
pixel = tuple(pixel)
enumerated_value=self._vmap.get(pixel)
print(enumerated_value)
print(tf.shape(pixel))
exit()
return enumerated_value
如果我现在尝试使用 tf.map_fn 尝试将元素指向通道维度,那么我会收到以下错误:(ValueError: elems 中的元素必须是 1+ 维张量,而不是标量).请帮助我了解如何为我的案例使用 tf.map_fn ?提前谢谢你
首先,不用 for 循环(为了效率尽量避免),你可以这样重塑:
elems = tf.reshape(inputs,-1)
其次,你到底想做什么? “它不起作用”是什么意思?错误信息是什么?什么是 self.do_mapping
?
最佳,
凯文