在MATLAB中,trainNetwork
函数用于训练深度学习网络。要选择神经网络类型,您需要首先定义一个网络层配置数组,该数组指定了网络的架构,包括输入层、隐藏层和输出层。以下是几个常见神经网络类型及其如何在MATLAB中定义:
1.全连接网络(Fully Connected Network)
layers = [
imageInputLayer([28 28 1]) % 例如,输入层用于28x28灰度图像
fullyConnectedLayer(128) % 第一个隐藏层,128个神经元
reluLayer % ReLU激活层
fullyConnectedLayer(64) % 第二个隐藏层,64个神经元
reluLayer
fullyConnectedLayer(10) % 输出层,10个神经元(例如,用于分类)
softmaxLayer % Softmax激活层,用于多类分类
classificationLayer % 分类层
];
2. 卷积神经网络(Convolutional Neural Network, CNN)
layers = [
imageInputLayer([224 224 3]) % 例如,输入层用于224x224彩色图像
convolution2dLayer(3, 16, 'Padding', 'same') % 卷积层,3x3滤波器,16个滤波器
reluLayer
maxPooling2dLayer(2, 'Stride', 2) % 最大池化层
convolution2dLayer(3, 32, 'Padding', 'same')
reluLayer
maxPooling2dLayer(2, 'Stride', 2)
fullyConnectedLayer(10) % 全连接层
softmaxLayer
classificationLayer
];
3. 递归神经网络(Recurrent Neural Network, RNN)
numFeatures = 1; % 输入特征的数量
numHiddenUnits = 200; % 隐藏层的单元数量
layers = [
sequenceInputLayer(numFeatures) % 序列输入层
recurrentLayer(numHiddenUnits, 'OutputMode', 'sequence') % RNN层
fullyConnectedLayer(1) % 全连接层
regressionLayer % 回归层,用于连续值预测
];
4. 长短期记忆网络(Long Short-Term Memory, LSTM)
layers = [
sequenceInputLayer(numFeatures) % 序列输入层
lstmLayer(numHiddenUnits, 'OutputMode', 'sequence') % LSTM层
fullyConnectedLayer(1) % 全连接层
regressionLayer % 回归层,用于连续值预测
];
5. 门控循环单元网络(Gated Recurrent Unit, GRU)
layers = [
sequenceInputLayer(numFeatures) % 序列输入层
gruLayer(numHiddenUnits, 'OutputMode', 'sequence') % GRU层
fullyConnectedLayer(1) % 全连接层
regressionLayer % 回归层,用于连续值预测
];
在定义了网络层配置数组后,您可以使用 trainNetwork
函数并传入您的数据来训练网络:
net = trainNetwork(trainData, trainLabels, layers, options);
在这里,trainData
是训练数据,trainLabels
是对应的标签,layers
是定义的网络层配置数组,而 options
是训练选项,如学习率、迭代次数等。