matlab的神经网络工具箱对一维输入数据期望什么训练样本格式?

时间:2019-12-13 10:32:46

标签: matlab neural-network

我尝试使用matlab的神经网络工具箱(Matlab版本为R2017a)设置深层自动编码器网络体系结构。但是,matlab所需的训练数据尺寸使我感到困惑。

这是该代码的简化版本:

% X is a input matrix whose columns contain the training data
dim1 = size(X, 1);
dim2 = size(X, 2);

fprintf('Inital size of X: (%d, %d)\n', dim1, dim2);

% Reshape X to expected dimension (4D)
X = reshape(X, 1, dim1, 1, dim2);

fprintf('Size of X after reshape: (%d, %d)\n', size(X, 1), size(X, 2));

% Layer parameters
nn_input_size = dim1;
nn_code_size = 2;
nn_layer_size = 250;

% Setup layers
layers = [ ...
    imageInputLayer([1, nn_input_size]) ...
    fullyConnectedLayer(nn_layer_size) ...
    reluLayer() ...
    fullyConnectedLayer(nn_code_size) ...
    reluLayer() ...
    fullyConnectedLayer(nn_layer_size) ...
    reluLayer() ...
    fullyConnectedLayer(nn_input_size) ...
    reluLayer() ...
    regressionLayer];

% Training parameters
nn_epochs = 1500;
nn_mini_batch_sz = max(ceil(0.1*nn_input_size), min(5, nn_input_size));

options = trainingOptions('sgdm', ...
    'ExecutionEnvironment','cpu', ...
    'MaxEpochs', nn_epochs, ...
    'MiniBatchSize', nn_mini_batch_sz, ...
    'Shuffle','never', ...
    'Verbose',0);

% Train the autoencoder network
nw = trainNetwork(X, X, layers, options);

输出:
X的初始大小:(75,1413)
重塑后的X大小:(1、75、1、1413)

使用trainNetwork时出错(第92行)
最后一层的输出大小[1 1 75]不
匹配响应大小[1 75 1]。

Matlab的文档说:

  

对于回归问题,Y可以是一个n×h×w×c×n的数值数组,其中n是观测数,h是w×w×c是单个响应的大小。

那我在做什么错了?

更新
通过为具有所需维度的训练数据创建单独的矩阵来修改上述程序后:

X_train = reshape(X, 1, 1, dim1, dim2);

,然后使用新数组作为训练过程的参数:

nw = trainNetwork(X, X_train, layers, options);

错误消失了,但是优化没有收敛。
即使使用以下(更正后的)最小批次大小公式,也仍然没有收敛:

nn_mini_batch_sz = max(ceil(0.1*nn_training_size), min(25, nn_training_size));

误差函数应该测量输出和输入之间的差异,以便网络学习重现输入。但是,现在我不知道网络是否满足我的要求,即计算输入向量与其复制的对应向量之间的差。

0 个答案:

没有答案