You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调整5D张量的空间维度:深度学习视频张量尺寸修改问询

调整5D视频张量的空间尺寸

针对你的5D输入张量(形状[32, 3, 16, 128, 192]),要将空间维度(H=128, W=192)调整为(224, 224),以下是主流深度学习框架的实现方案:

PyTorch 实现

PyTorch的F.interpolate或nn.Upsample可直接处理5D张量,自动对每个时间步的帧进行空间插值,无需额外维度转换:

方法1:函数式API(适合单次处理)

import torch
import torch.nn.functional as F

# 构造示例输入张量
x = torch.randn(32, 3, 16, 128, 192)

# 调整空间尺寸:指定目标空间大小(224,224),选择双线性插值
resized_x = F.interpolate(
    x,
    size=(224, 224),
    mode='bilinear',
    align_corners=False  # PyTorch 1.6+默认值,建议保持该设置
)

# 验证形状:resized_x.shape → torch.Size([32, 3, 16, 224, 224])

方法2:模块层(适合嵌入模型)

如果需要将resize操作作为模型的一部分,可使用nn.Upsample层:

import torch.nn as nn

upsample = nn.Upsample(
    size=(224, 224),
    mode='bilinear',
    align_corners=False
)
resized_x = upsample(x)

说明:mode参数可按需选择:bilinear适合RGB视频帧,nearest适合无需平滑的场景,bicubic插值精度更高但计算量更大。

TensorFlow/Keras 实现

TensorFlow的图像resize操作默认通道维度在最后,因此需要先调整张量维度顺序,处理后再转回原格式:

方法1:使用tf.image.resize

import tensorflow as tf

# 构造示例输入张量
x = tf.random.normal((32, 3, 16, 128, 192))

# 转换维度顺序为 [batch, T, H, W, channels]
x_reshaped = tf.transpose(x, perm=[0, 2, 3, 4, 1])

# 调整空间尺寸
resized_x_reshaped = tf.image.resize(
    x_reshaped,
    size=(224, 224),
    method='bilinear'
)

# 转回原维度顺序 [batch, channels, T, H, W]
resized_x = tf.transpose(resized_x_reshaped, perm=[0, 4, 1, 2, 3])

# 验证形状:tf.shape(resized_x) → Tensor([32, 3, 16, 224, 224])

方法2:使用Keras层(适合模型嵌入)

from tensorflow.keras import layers

x_reshaped = tf.transpose(x, perm=[0, 2, 3, 4, 1])
resize_layer = layers.Resizing(224, 224, interpolation='bilinear')
resized_x_reshaped = resize_layer(x_reshaped)
resized_x = tf.transpose(resized_x_reshaped, perm=[0, 4, 1, 2, 3])

内容的提问来源于stack exchange,提问作者dtr43

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 01:20:20