matlab2019a中深度学习网络的训练方法(Deep Learning Toolbox系列篇7)

16 篇文章 19 订阅
12 篇文章 24 订阅

在matlab2019a中,有一个trainNetwork的函数,可以直接对一个自己构建的深度学习网络模型及数据集进行训练拟合,下面讲一下具体的网络构建语法数据集输入以及网络超参数的设定等问题。
在官方的介绍文档里面,trainNetwork函数可以用来训练卷积神经网络,LSTM网络,BiLSTM网络,并用以分类或者回归类问题,您可以选择CPU或者GPU的方式进行训练,并行的训练方式要求勾选了matlab中的Parallel Computing Toolbox™。若使用GPU的话,需要配置可用的CUDA以及具备可用的NVIDIA GPU的硬件,且指定训练的一些超参数,需要用到 trainingOptions的方式设定。

1. trainNetwork函数的语法

trainedNet = trainNetwork(imds,layers,options)
trainedNet = trainNetwork(ds,layers,options)
trainedNet = trainNetwork(X,Y,layers,options)
trainedNet = trainNetwork(sequences,Y,layers,options)
trainedNet = trainNetwork(tbl,layers,options)
trainedNet = trainNetwork(tbl,responseName,layers,options)
[trainedNet,traininfo] = trainNetwork(___)

接下来对上述trainNetwork函数的相关描述。

1) trainedNet = trainNetwork(imds,layers,options)

用途:训练一个用以图像分类问题的网络;

参数说明:imds是输入的图像数据;layers为定义的网络架构;options为定义的超参数。

 

2)trainedNet = trainNetwork(ds,layers,options)

用途: 使用数据存储区ds的网络,它返回两列table或两列cell中的读取数据。且这两列分别存储了网络输入以及网络期望的输出。

其余参数同上。

 

3)trainedNet = trainNetwork(X,Y,layers,options)

用途:可用于回归或分类问题,训练网络中最常用的使用方式。

参数说明:X包含预测变量,Y包含分类标签或数字响应。

 

4)trainedNet = trainNetwork(sequences,Y,layers,options)

用途: 训练LSTM或BiLSTM网络以进行分类和回归问题。

参数说明: sequence是包含序列或时间序列预测变量的单元格数组,Y包含响应。 对于分类问题,Y是分类向量或分类序列的单元阵列。 对于回归问题,Y是目标矩阵或数字序列的单元数组。

 

5)trainedNet = trainNetwork(tbl,layers,options)

用途:训练网络进行分类和回归问题。

参数说明:tbl包含数据的数字数据或文件路径。 预测变量必须位于tbl的第一列。 有关目标或响应变量的信息,请参阅tbl。

 

6)trainedNet = trainNetwork(tbl,responseName,layers,options)

用途:训练网络进行分类和回归问题。 预测变量必须位于tbl的第一列。

参数说明:responseName参数指定tbl中的响应变量。

 

7)[trainedNet,traininfo] = trainNetwork(___)

使用先前语法中的任何输入参数返回有关训练的信息。

 

2. 源码示例

未完待续

Deep Learning Toolbox™提供了一个框架,用于设计和实现具有算法,预训练模型和应用程序的深度神经网络。您可以使用卷积神经网络(ConvNets,CNN)和长期短期记忆(LSTM)网络对图像,时间序列和文本数据进行分类和回归。应用程序和图表可帮助您可视化激活,编辑网络体系结构以及监控培训进度。 对于小型训练集,您可以使用预训练的深层网络模型(包括SqueezeNet,Inception-v3,ResNet-101,GoogLeNet和VGG-19)以及从TensorFlow™-Keras和Caffe导入的模型执行传输学习。 了解深度学习工具箱的基础知识 深度学习图像 从头开始训练卷积神经网络或使用预训练网络快速学习新任务 使用时间序列,序列和文本进行深度学习 为时间序列分类,回归和预测任务创建和训练网络 深度学习调整和可视化 绘制培训进度,评估准确性,进行预测,调整培训选项以及可视化网络学习的功能 并行和云深度学习 通过本地或云的多个GPU扩展深度学习,并以交互方式或批量作业培训多个网络 深度学习应用 通过计算机视觉,图像处理,自动驾驶,信号和音频扩展深度学习工作流程 深度学习导入,导出和自定义 导入和导出网络,定义自定义深度学习图层以及自定义数据存储 深度学习代码生成 生成MATLAB代码或CUDA ®和C ++代码和部署深学习网络 函数逼近和聚类 使用浅层神经网络执行回归,分类和聚类 时间序列和控制系统 基于浅网络的模型非线性动态系统; 使用顺序数据进行预测。
MATLAB Deep Learning Toolbox,如果你想要创建自定义的损失函数,你可以通过编写一个接受输入预测值和真实标签作为参数,并返回损失值的函数。下面是一个简单的步骤指南: 1. **创建函数**: 创建一个新的.m文件,例如`custom_loss_function.m`。在这个文件,定义一个函数,比如`lossFun`, 它通常需要两个输入:`yPred` (网络的预测) 和 `yTrue` (实际标签)。函数应该返回一个标量值,表示单个样本的损失。 ```matlab function loss = custom_loss_fun(yPred, yTrue) % 在这里编写你的自定义损失计算逻辑,可以基于mse、crossentropy等标准形式做修改 loss = mean((yPred - yTrue).^2); % 例如,这里使用均方误差(MSE) % 如果你想添加额外的逻辑,如权重衰减或其他惩罚项,也可以在这里添加 end ``` 2. **设置损失函数**: 当训练神经网络时,你需要将这个自定义函数提供给`trainingOptions`函数。这可以通过`'LossFunction'`选项来指定: ```matlab net = trainNetwork(inputData, targetData, layers, options); options = trainingOptions('adam', ... % 使用Adam优化器 'Verbose', false, ... % 静默训练 'Plots', 'none', ... % 不显示训练进度图表 'MiniBatchSize', 32, 'LossFunction', @custom_loss_fun); % 设置自定义损失函数 ``` 3. **验证和测试**: 训练完成后,你可以在验证集和测试集上评估模型,同样使用你的自定义损失函数。 注意:为了能够正确使用自定义损失函数,它必须符合`minimize`函数的要求,即对于较大的预测值,损失应该较小,反之亦然。
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拦路雨g

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值