训练过程总结问题(一)

    最近在做烟盒检测的U型分类,主要是来查看烟盒的摆放是否是U型排列(相同类别的烟盒)。

    通过目标检测将每一张图含有的烟盒检测出来,并进行分类,并统计每一类烟盒的出现在该图像的频率,一般数目为6个及以上的数量才能构成U型排列,因此,统计出哪类烟盒出现在图像的次数超过6次,并将其生成二值化图,用于U型分类,主要是类似于Minist手写数字,但是在训练过程中遇到了诸多问题。

首先使用了类似Alexnet网络构造的模型,但是train_loss为5.多而且不收敛,train_acc约为.6左右,valid_acc约为0.7左右,两个accuracy基本上都不变化。

可能造成该问题的原因及分析:

(1)正负样本的训练比例是2:1,测试样本为3:1,因此可以大概判断出精确度跟瞎猜一样,根本没有学习到任何东西,可能掉入了局部最优点。解决:训练初期使用较高的学习率。

(2)本来以为是网络的网络结构有问题,但是在分析过程中使用了更深的网络,结果跟使用Alexnet类似,于是分析可能是网络结构太深,直接掉入局部最优点。

(3)还以为是网络初始化的问题,分别使用了xavier,uniform,random_norm参数进行初始化,结果造成的影响均一致,因此判断网络结构以及学习率对其影响更大。

(4)采用了削减网络,由于最大池化层虽然保持了尺度不变性和旋转不变性,但是其减少了全局信息,因此第一步将最大池化层全部剔除并增大学习率,valid_acc在逐步提升,达到了80%.但是,这远远不够,于是采用了只含有两个全连接层的网络结构,结果valid_acc高达98%,由此可见全连接层对于全局信息看的还是清楚。但是,由于使用了全连接层,其参数过大为1GB因此,不再使用全连接层,还是改为了全卷积(通过卷积来调整featuremap的大小)+1Dense,在不断的调解学习率,使得valid_acc为95,其参数只为8M。

(5)在后一次训练期间,由于label的不平衡,所以首先做了dataAugument,随机裁减了正样本作为负样本使用。

(6)由于Maxpooling会使得图像失去全局信息,因此不能使用Maxpooling,但是在实际中U型排列会出现在图像各处,因此我们先将U型排列置于图像中间即对其进行裁剪,然后再送入网络中训练、学习,网络最后得到的featuremap的大小16*16不算小。

针对上述出现的问题,我们进行了一系列的操作。

### 回答1: torch卷积神经网络的训练过程主要包括以下几个步骤: 1. 数据准备:首先需要准备训练集和验证集。训练集是用来训练模型的数据集,而验证集则是用来评估模型性能和调整超参数的数据集。数据集通常需要进行预处理,如图像数据需要进行归一化处理。 2. 模型构建:使用torch搭建卷积神经网络模型。卷积神经网络包括多个卷积层、池化层、全连接层等。可以通过定义网络的结构和参数来构建模型。 3. 损失函数定义:选择适当的损失函数来度量模型预测结果与真实标签之间的差异。常用的损失函数包括交叉熵损失函数、均方差损失函数等。 4. 优化算法选择:选择合适的优化算法来更新模型的参数。常用的优化算法包括梯度下降法及其改进算法,如Adam、RMSprop等。 5. 训练模型:使用训练集对模型进行训练。每次迭代时,通过前向传播获得模型的输出,再通过反向传播计算梯度,并根据优化算法更新模型参数。重复这个过程直到达到事先设定的停止条件,如达到最大迭代次数或损失函数收敛。 6. 模型评估:使用验证集对训练得到的模型进行评估,计算模型在验证集上的准确率、精确率等指标。可以根据评估结果对模型进行进一步的调优。 7. 模型应用:使用测试集对训练好的模型进行测试,进一步评估模型的泛化能力和性能。 整个训练过程可以多次重复,通过不断调整模型参数、优化算法以及数据预处理等方法,逐步改进模型的性能,提高模型的准确率和鲁棒性。 ### 回答2: Torch卷积神经网络的训练过程主要包括数据准备、网络搭建、损失函数选择、优化器选择和迭代训练等步骤。 首先,数据准备是一个重要的步骤。我们需要将数据集分成训练集、验证集和测试集,并进行数据预处理。预处理过程可能包括图像尺寸调整、归一化等操作,以便更好地适应模型的输入。 接下来,我们需要选择并搭建卷积神经网络模型。Torch提供了丰富的卷积神经网络模型,如VGG、ResNet等。我们根据具体任务的需求选择合适的网络结构,并用Torch搭建起来。 然后,我们需要选择合适的损失函数来衡量模型的输出与真实标签之间的误差。对于分类任务,常用的损失函数包括交叉熵损失函数等。 接下来,我们需要选择合适的优化器来更新模型的参数,以最小化损失函数。Torch提供了常用的优化器,如SGD、Adam等。我们可以根据实际情况选择合适的优化器,并设置合适的学习率以控制参数的更新速度。 最后,我们开始进行迭代训练训练过程中,我们将训练集输入到模型中,通过前向传播计算模型的输出。然后,将输出与真实标签计算损失函数,并通过反向传播计算梯度。最后,利用优化器对模型的参数进行更新。这个过程会迭代多次,直到达到预设的训练轮数或损失函数收敛为止。 通过以上步骤的迭代,我们可以不断优化模型的参数,使得模型在训练集上能够更好地拟合,并通过验证集的性能指标来调整模型的超参数,最终在测试集上评估训练好的模型的性能。 ### 回答3: Torch卷积神经网络的训练过程通常包含以下几个步骤: 1. 数据准备:首先需要准备好训练所需的数据集。通常会将数据集划分为训练集、验证集和测试集。训练集用于网络的参数更新,验证集用于调整网络的超参数,而测试集用于评估网络的性能。 2. 网络搭建:接下来需要搭建卷积神经网络模型。Torch提供了灵活且强大的工具,可以轻松构建各种类型的神经网络模型。可以选择不同的图层类型,如卷积层、池化层、全连接层等来设计网络结构。 3. 参数初始化:在训练开始之前,需要对网络模型的参数进行初始化。可以使用Torch提供的初始化方法,如正态分布、均匀分布等,来随机初始化网络参数。 4. 前向传播:在每个训练周期中,将输入数据通过网络进行前向传播,得到预测结果。通过计算损失函数来衡量预测结果与真实标签之间的差距。 5. 反向传播:利用反向传播算法,根据损失函数的梯度信息,逐层更新网络参数,以减小损失函数的值。Torch提供了自动求导功能,可以自动计算网络参数的梯度。 6. 参数更新:使用优化算法对网络参数进行更新。常用的优化算法包括随机梯度下降(SGD)、Adam等。这些优化算法会根据网络参数的梯度信息来更新参数值,以逐步降低损失函数的值。 7. 重复训练:重复执行步骤4至步骤6,直到达到预定的训练轮数。每轮训练完成后,可以使用验证集进行模型的性能评估,并根据验证集的结果来调整网络的超参数。 8. 测试和评估:训练完成后,可以使用测试集来评估模型在未见过的数据上的性能。通过计算分类准确率、精确率、召回率等指标,来评估模型的性能并与其他方法进行比较。 总结来说,Torch卷积神经网络的训练过程主要包括数据准备、网络搭建、参数初始化、前向传播、反向传播、参数更新、重复训练和测试评估等步骤。这些步骤的目标是通过多次迭代优化网络参数,使得网络模型能够很好地拟合训练数据,并在未见过的数据上具有泛化能力。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值