Python中重塑字典张量形状:合并双单通道张量为双通道
解决思路
你需要的是将两个单通道张量在通道维度(最后一维)合并,而tf.expand_dims只是给单个张量增加维度,无法实现多张量的合并,以下是两种可行方法:
方法一:使用tf.concat(推荐)
直接在最后一维(axis=-1)拼接两个张量,这是最直接的方式:
# 假设字典的两个键为key0和key1,根据你的实际键名替换 tensor1 = my_dict["key0"] tensor2 = my_dict["key1"] combined_tensor = tf.concat([tensor1, tensor2], axis=-1)
拼接后combined_tensor的形状就是([612, 41, 41, 2]),完全符合CNN输入要求。
方法二:使用tf.stack配合tf.squeeze
先通过tf.stack在最后一维堆叠两个张量,再挤压掉多余的维度:
tensor1 = my_dict["key0"] tensor2 = my_dict["key1"] stacked_tensor = tf.stack([tensor1, tensor2], axis=-1) # stacked_tensor形状为([612, 41, 41, 1, 2]),挤压倒数第二维 combined_tensor = tf.squeeze(stacked_tensor, axis=-2)
最终得到的张量形状同样是([612, 41, 41, 2])。
关键说明
tf.expand_dims的作用是给单个张量新增维度,你之前的操作会把([612,41,41,1])变成([612,41,1,41,1]),这和合并两个张量的需求完全不符,所以无法达到目的。- 两种方法中,
tf.concat更高效,因为不需要额外的维度挤压操作,优先使用。
内容的提问来源于stack exchange,提问作者lola
相关产品推荐
相关产品推荐

