实现一个简单的的神经网络(一)---超参数的定义

实现一个简单的的神经网络(一)—超参数的定义 1. 导入需要用到的库 基于pytorch架构 import torch import torch. nn as nn import torch. optim as optim import torch. nn. functional as F from torchvision import

实现一个简单的的神经网络(一)—超参数的定义

1. 导入需要用到的库

基于pytorch架构

import torch
import torch.nn as nn
import torch.optim as optim
import torch.nn.functional as F
from torchvision import datasets, transforms
import matplotlib.pyplot as plt
import numpy as np

#如果没有的话使用以下命令安装
pip install torch
pip install torchvision 
pip install matplotlib

2. 设置超参数

#定义超参数
input_size = 28 #图像总尺寸28*28
num_classes = 10 #标签的种类 在这里我们使用的数据集是手写数字数据集MNIST
num_epochs = 30 #训练的总循环周期
batch_size = 64 #一个批次的大小,64张图片

2.1. 设置图像的输入尺寸

CNN网络原侧上是不受图片输入尺寸的影响,但是由于我们采用了全连接输出,因为全连接的参数量得固定,倘若样本图片大小不同,那么卷积层最后得到的feature map大小也不同,flatten之后会导致维度不一致,那么全连接的参数量就也会随样本维度变化而不能相互兼容,所以我们需要设置一个固定的输入尺寸。如果采取其他的输出方式替代全连接层,那么就不需要设置固定的尺寸。

2.2. 设置图像的poch

一个epoch指代所有的数据送入网络中完成一次前向计算及反向传播的过程。
通常一次或者较少的epoch是不能让网络充分学习的,但是设置大量的epoch不仅会导致训练时间过长,还会造成网络的过拟合,也是没有必要的。
epoch的大小不仅和所使用的网络有关,也和数据集的大小与复杂度相关。
epoch没有一个精确的值,通常网络的损失函数达到平稳波动的时候就是epoch的最佳范围,即可暂停训练。

2.3. 设置图像的batchsize

由于数据集通常较大,整体训练对电脑性能要求较高,通常一次只送入一小批数据进行训练,每次送入训练的一批数据就是一个batch,而这个batch大小即为batchsize。
batchsize设置过小容易造成网络收敛较慢的情况。
batchsize设置过大对显存要求过高。
通常根据自己的电脑设置(4,8,16,32,64)的大小,如果有GPU的话可以设置大点,没有的话可以,小一点,设置为1则无意义。

知秋君
上一篇 2024-09-01 09:12
下一篇 2024-09-01 08:48

相关推荐