错误使用 ' TRANSPOSE 不支持 N 维数组。请使用 PAGETRANSPOSE/PAGECTRANSPOSE 转置页,或使用 PERMUTE 重新排列 N 维数组的维度。 出错 untitled (第 16 行) X_train_reshape = reshape(X_train', [10, 30, size(X_train, 1)/30]);
时间: 2024-03-16 22:44:20 浏览: 171
数组转置问题
5星 · 资源好评率100%
非常抱歉,我之前的回答仍然有误。Matlab 中的转置操作 `'` 仅支持二维数组,无法对多维数组进行转置。对于多维数组,可以使用 `permute` 函数对维度进行重新排列。
修改后的代码如下:
```matlab
numFeatures = 10;
numHiddenUnits = 200;
numClasses = 3;
X_train_reshape = reshape(X_train, [10, 30, size(X_train, 1)/30]);
X_train_reshape = permute(X_train_reshape, [2, 1, 3]);
X_test_reshape = reshape(X_test, [10, 30, size(X_test, 1)/30]);
X_test_reshape = permute(X_test_reshape, [2, 1, 3]);
layers = [ ...
sequenceInputLayer(numFeatures)
lstmLayer(numHiddenUnits)
fullyConnectedLayer(numClasses)
softmaxLayer
classificationLayer];
options = trainingOptions('adam', ...
'ExecutionEnvironment','cpu', ...
'MaxEpochs',100, ...
'MiniBatchSize',128, ...
'GradientThreshold',1, ...
'Shuffle','never', ...
'Verbose',0);
net = trainNetwork(X_train_reshape, categorical(Y_train), layers, options);
YPred = classify(net, X_test_reshape);
```
请注意,我在上面的代码中使用了 `reshape` 和 `permute` 函数来重新整理输入数据。`reshape` 函数将每行 10*30 个元素重新排列为 10 行,30 列,然后 `permute` 函数将第一维和第二维交换,以便输入到网络中。
如果还有问题,请告诉我。
阅读全文