NARX输入大小问题

5视图(30天)
奥斯曼高山阿尔金
奥斯曼高山阿尔金 2023年2月25日
回答: Shubham 2023年4月5日
你好,
我已经使用NARX训练网络。现在我处理新的数据集测试网络。这是我的代码:
[p1,₁, Ai1, t1) = preparets (narx_net input_u, {}, output_y);
yp1 = narx_net (p1,₁, Ai1);
一旦运行,它生成以下错误:
错误使用网络/ sim
输入数据大小不匹配net.inputs {1} .size。
错误在索引(15行)
否则v = sim (vin,潜艇{:});
错误在v2_test_NARX(第71行)
yp1 = narx_net (p1,₁, Ai1);
我检查了输入和输出的大小,但它们同样大小。
size_in =大小(input_u)
size_out =大小(output_y)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
size_in =
1 39060
size_out =
1 39060
我不明白是什么问题,我用相同的策略训练但是我看不到任何一部分preparets使用的差异。
请给任何建议来解决这个问题。
2的评论
Amanjit Dulai
Amanjit Dulai 2023年2月27日
这个问题有点棘手的调试,没有完整的代码。
  • 你使用的数据的大小是什么培训?
  • 是训练和预测数据格式化单元阵列?
  • 你使用什么命令来创建narx_net吗?

登录置评。

答案(1)

Shubham
Shubham 2023年4月5日
嗨奥斯曼,
基于错误消息,似乎传递给网络输入数据的大小不匹配的预期规模网络的输入层。即使你有检查输入和输出数据的大小都是一样的,可能会有输入数据的格式的问题导致的错误。
错误的一个可能原因是,输入数据错误的尺寸。preparets功能预计时间序列的单元阵列,其中每个时间序列是一个数字矩阵具有相同的行数和相同数量的列作为输入数据。因此,您可能需要确保输入数据格式正确地传递到preparets函数之前。这是一个如何格式输入数据的例子:
input_seq = num2cell (input_u, 1);
output_seq = num2cell (output_y, 1);
[p1,₁, Ai1, t1) = preparets (narx_net input_seq, {}, output_seq);
在这里, num2cell 用于输入和输出数据转换成数字序列的细胞阵列,每个序列只有一个时间步的地方。
错误的另一个可能的原因是,网络的输入尺寸没有被正确设置。您可以检查网络的输入层的大小使用下面的代码:
input_size = narx_net.inputs {1} .size;
确保输入数据的大小匹配网络的输入层的大小。如果不是,你可能需要调整网络的输入大小来匹配输入数据的大小。
我希望这可以帮助!

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!