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

如何合并不同维度的音频、文本特征数组得到指定形状后输入LSTM

解决方案

首先你需要先对齐两个特征数组的维度,再按需求拼接,以下是可直接运行的实现代码:

import numpy as np

# 模拟你的输入特征
audio_features = np.random.rand(396, 63, 64)
text_features = np.random.rand(52, 1, 64)

# 1. 对齐音频特征的第二维到64,补0填充
audio_aligned = np.pad(audio_features, ((0,0), (0,1), (0,0)), mode='constant')
# 输出形状:(396, 64, 64)

# 2. 对齐文本特征的第二维到64,将1步长的特征复制到所有64个步长位置
text_aligned = np.tile(text_features, (1, 64, 1))
# 输出形状:(52, 64, 64)

# 3. 补齐最后一维到128,音频特征占前64位,文本特征占后64位
audio_full = np.concatenate([audio_aligned, np.zeros_like(audio_aligned)], axis=-1)
text_full = np.concatenate([np.zeros_like(text_aligned), text_aligned], axis=-1)

# 4. 拼接第一维得到目标形状的数组
final_input = np.concatenate([audio_full, text_full], axis=0)
print(final_input.shape) # 输出 (448, 64, 128)

之前的方法不符合要求的原因

  • np.column_stack 默认按第二维拼接,会自动调整低维数组的形状,无法匹配你的维度要求
  • 直接使用np.concatenate((audio_features,text_features), axis=2) 时,两个数组的前两维形状不一致,numpy会直接抛出维度不匹配的错误
  • np.append 会先把所有数组拉平成一维再拼接,完全丢失原有的维度结构
  • 使用np.tile和np.repeat的组合会把样本数放大到396*52,远大于你需要的448,自然无法得到目标形状

如果你需要的是每个样本同时包含对应音频和文本的融合特征,可以用如下方案,前提是你的396条音频和52条文本是一一对应总448条样本的两部分:

# 对齐第一维到448,同时对齐第二维到64
audio_pad = np.pad(audio_features, ((0,52), (0,1), (0,0)), mode='constant')
text_pad = np.pad(text_features, ((396,0), (0,63), (0,0)), mode='constant')
# 最后一维直接拼接得到融合特征
final_input = np.concatenate([audio_pad, text_pad], axis=-1)
print(final_input.shape) # 输出 (448, 64, 128)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:54:04