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

车辆轨迹预测训练时mini-batch格式错误排查求助

车辆轨迹预测任务Mini-batch格式不匹配问题排查与解决

问题背景

车辆轨迹预测任务:使用t-30时刻序列数据预测t+30时刻轨迹,数据维度与格式如下:

  • 邻居占用矩阵:13×3×1×30×138634(13×3网格、1通道、30序列长度、138634样本数),格式SSCTB
  • 目标车辆数组:30×3×138634(30序列长度、3代表(x,y,v)、138634样本数),格式TCB

训练触发错误:

Error forming mini-batch for network input "sequenceinput". Data interpreted with format "SSCTB". To specify a different format, use the InputDataFormats option.
Error in main (line 488)
trainnedNet = trainnet(TrainDS,net,"l2loss",options);
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Caused by:
Batch dimension of datastore must match the format batch dimension (5).


问题根源

  1. Datastore使用错误:原代码将整个训练集打包为单个cell存储,signalDatastore读取后仅生成1个数据条目,trainnet无法拆分出mini-batch,导致batch维度不匹配。
  2. ValidationData参数格式错误:组合后的验证集datastore已包含输入与标签,无需单独传入标签datastore。
  3. 未指定输出数据格式:损失函数无法正确解析标签的维度格式。

修正方案

1. 重构数据存储与Datastore创建

替换原代码中save与datastore创建部分,改用arrayDatastore按样本维度拆分数据:

% 加载数据后直接处理数组,无需打包为cell
X1Train = permute(input_neigh_odd(:,:,:,:,trainIdx), [1 2 3 5 4]); % 转为SSCTB格式:(13,3,1,30,Batch)
X2Train = input_target_odd_centered(:,:,trainIdx); % TCB格式:(30,3,Batch)
YTrain = input_target_even_centered(:,:,trainIdx); % TCB格式:(30,3,Batch)

X1Val = permute(input_neigh_odd(:,:,:,:,valIdx), [1 2 3 5 4]);
X2Val = input_target_odd_centered(:,:,valIdx);
YVal = input_target_even_centered(:,:,valIdx);

% 使用arrayDatastore按batch维度拆分样本
dsX1Train = arrayDatastore(X1Train, 'IterationDimension', 5); % 第5维为batch,每次迭代取1个样本
dsX2Train = arrayDatastore(X2Train, 'IterationDimension', 3); % 第3维为batch
dsYTrain = arrayDatastore(YTrain, 'IterationDimension', 3);

dsX1Val = arrayDatastore(X1Val, 'IterationDimension', 5);
dsX2Val = arrayDatastore(X2Val, 'IterationDimension', 3);
dsYVal = arrayDatastore(YVal, 'IterationDimension', 3);

% 组合输入与标签
TrainDS = combine(dsX1Train, dsX2Train, dsYTrain);
ValDS = combine(dsX1Val, dsX2Val, dsYVal);

2. 修正trainingOptions参数

调整ValidationData格式,新增OutputDataFormat指定标签格式:

alpha = 0.001;
options = trainingOptions( ...
    "adam", ...
    "InputDataFormats", {'SSCTB', 'TCB'},...
    "OutputDataFormat", 'TCB', % 指定输出标签的格式为TCB
    Plots="training-progress", ...
    ValidationData = ValDS, % 直接传入组合后的验证集(输入+标签)
    ValidationFrequency = 100, ...
    ValidationPatience = 5, ...
    ExecutionEnvironment = "parallel-auto",...
    MaxEpochs = 15,...
    InitialLearnRate=alpha,...
    MiniBatchSize=256,...
    L2Regularization=0.0001,...
    Verbose=false);

3. 确认网络输入层匹配

原网络输入层与数据格式已匹配,无需修改:

  • sequenceInputLayer([13 3 1])对应SSCTB的空间维度与通道数
  • sequenceInputLayer(3)对应TCB的特征维度

内容的提问来源于stack exchange,提问作者Barbaros Teoman Kosoglu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 21:19:54