https://zh.d2l.ai/chapter_convolutional-neural-networks/lenet.html
LeNet-5第二个卷积层,是如何把第1个卷积层的6个通道变为16个输出通道的?第二个卷积层卷积核是16* 6 * 5* 5吗?也就是16个卷积核,每个卷积核是6 * 5 * 5,每个卷积核与输入6通道进行互运算然后求和汇总形成单通道吗?
1 Like
对的,基本就是这个意思。一个核的尺寸是前一层的形状,产出的是一层featuer map.
I want to ask for you ,there is two gpu are working?
你说得对,参考 6.1.4.1. 通道 的描述
if made the lr = 0.01 , how does the network will be?
接下来,如果我想使用自己的图片做预测,我该怎样做呢?
import cv2
import numpy as np
img = cv2.imread("E:\\four.jpg",0)
img = cv2.resize(img,(28,28)) # 转化为数据集对应的大小
# 因为MNIST数据集中的图片都是黑底白字,所以此处还需要图片进行反色处理。
height,width=img.shape
dst=np.zeros((height,width),np.uint8)
for i in range(height):
for j in range(width):
dst[i,j]=255-img[i,j]
img = dst
# 处理完成后的图片和之前的步骤就一样了,送入网络,输出结果
img=np.array(img).astype(np.float32)
img=np.expand_dims(img,0)
img=np.expand_dims(img,0)#扩展后,为[1,1,28,28]
img # 先测试下结果
img=torch.from_numpy(img)
# 接下来我就不会了
我如何将训练好的模型保存呢
you should try pickle.dump
不使用 `d2l` 模块,单独定义 `fashionMNIST_loader()` 函数并基于封装良好的类(自认为)实现
# dataset_loader.py
import os
from typing import Tuple
import torchvision
from torch import Tensor
from torch.utils.data import DataLoader
from torchvision import transforms
DATASETS_PATH = os.path.expanduser('~/DataSets')
def fashionMNIST_loader(batch_size, *, resize=None) -> Tuple[
DataLoader[list[Tensor, Tensor]], DataLoader[list[Tensor, Tensor]]]:
t = [transforms.ToTensor(), # 将 PIL 图像或 numpy.ndarray 转换为 Tensor,并归一化到 [0, 1] 之间
transforms.Normalize((0.5,), (0.5,))] # 标准化操作,将数据均值和标准差设为 0.5
if resize:
t.insert(0, transforms.Resize(size=resize)) # 调整图像尺寸。整数,按比例将短边调整到指定的大小;元组,指定宽高
trans_pipe = transforms.Compose(t) # 转换操作仅在数据被访问时动态应用
dataset_train = torchvision.datasets.FashionMNIST(
root=DATASETS_PATH, train=True, transform=trans_pipe, download=True)
dataset_test = torchvision.datasets.FashionMNIST(
root=DATASETS_PATH, train=False, transform=trans_pipe, download=True)
iter_train = DataLoader(dataset_train, batch_size, shuffle=True, num_workers=4)
iter_test = DataLoader(dataset_test, batch_size, shuffle=True, num_workers=4)
return iter_train, iter_test
模型训练与评估的主要代码:
from typing import Literal
import torch
from torch import Tensor
from torch import device
from torch import nn
from torch import optim
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
from dataset_loader import fashionMNIST_loader
class LeNet(nn.Module):
def __init__(self):
super().__init__()
self.model = nn.Sequential(
# 每张图片为 28×28
# 特征提取器 = 卷积层 + 激活函数 + 池化层
nn.Conv2d(in_channels=1, out_channels=6, kernel_size=5, padding=2), nn.Sigmoid(), # (BatchSize, 6, 28, 28)
nn.AvgPool2d(kernel_size=2, stride=2), # (BatchSize, 6, 14, 14)
nn.Conv2d(in_channels=6, out_channels=16, kernel_size=5), nn.Sigmoid(), # (BatchSize, 16, 10, 10)
nn.AvgPool2d(kernel_size=2, stride=2), # (BatchSize, 16, 5, 5)
# 分类器(展平后依次进入三个全连接层)
nn.Flatten(), # (BatchSize, 16×5×5)
nn.Linear(in_features=16 * 5 * 5, out_features=120), nn.Sigmoid(), # (BatchSize, 120)
nn.Linear(in_features=120, out_features=84), nn.Sigmoid(), # (BatchSize, 84)
nn.Linear(in_features=84, out_features=10) # (BatchSize, 10)
)
def forward(self, x) -> Tensor:
return self.model(x)
class Trainer:
def __init__(self,
model: nn.Module,
train_loader: DataLoader[list[Tensor, Tensor]],
test_loader: DataLoader[list[Tensor, Tensor]],
criterion: nn.Module,
optimizer: optim.Optimizer,
platform: device,
log_dir: str = './runs'):
self.model: nn.Module = model.to(platform)
self.train_loader: DataLoader[list[Tensor, Tensor]] = train_loader
self.test_loader: DataLoader[list[Tensor, Tensor]] = test_loader
self.criterion: nn.Module = criterion
self.optimizer: optim.Optimizer = optimizer
self.platform: device = platform
self.writer = SummaryWriter(log_dir)
def _run_epoch(self, data_loader: DataLoader[list[Tensor, Tensor]], mode: Literal['train', 'eval']):
assert mode in ['train', 'eval'], "mode must be either 'train' or 'eval'"
total_loss = correct_count = total_count = 0.0
is_train: bool = mode == 'train'
self.model.train() if is_train else self.model.eval()
with torch.set_grad_enabled(is_train):
for features, labels in data_loader:
features: Tensor = features.to(self.platform)
labels: Tensor = labels.to(self.platform)
outputs: Tensor = self.model(features) # 前向传播
loss: Tensor = self.criterion(outputs, labels)
if is_train: # 反向传播与优化(只有在训练时)
self.optimizer.zero_grad()
loss.backward()
self.optimizer.step()
total_loss += loss.item()
_, predicted = outputs.max(dim=1)
total_count += labels.size(0)
correct_count += (predicted == labels).sum().item()
accuracy = 100 * correct_count / total_count
loss = total_loss / len(data_loader)
return accuracy, loss
def train(self, epochs_num: int):
for epoch in range(epochs_num):
accuracy_train, loss_train = self._run_epoch(self.train_loader, mode='train')
accuracy_test, loss_test = self.evaluate() # 调用评估方法
# TODO: 记录训练损失和精度。可以考虑使用装饰器输出或 TensorBoard 数据
self.writer.add_scalar('Accuracy/train', accuracy_train, global_step=epoch + 1)
self.writer.add_scalar('Loss/train', loss_train, global_step=epoch + 1)
self.writer.add_scalar('Accuracy/test', accuracy_test, global_step=epoch + 1)
self.writer.add_scalar('Loss/test', loss_test, global_step=epoch + 1)
print(f'第 {epoch + 1:03}/{epochs_num} 轮,'
f'训练损失:{loss_train:.4f},训练精度:{accuracy_train:05.2f}%,'
f'测试损失:{loss_test:.4f},测试精度:{accuracy_test:05.2f}%')
def evaluate(self):
accuracy_test, loss_test = self._run_epoch(self.test_loader, mode='eval')
return accuracy_test, loss_test
def __enter__(self):
return self
def __exit__(self, exc_type, exc_val, exc_tb):
self.writer.close()
def main(batch_size, learning_rate, epochs_num):
model = LeNet()
train_loader, test_loader = fashionMNIST_loader(batch_size)
criterion = nn.CrossEntropyLoss()
optimizer = optim.SGD(model.parameters(), learning_rate)
platform = torch.device('cuda' if torch.cuda.is_available() else 'cpu')
with Trainer(model, train_loader, test_loader, criterion, optimizer, platform) as trainer:
trainer.train(epochs_num)
if __name__ == '__main__':
BATCH_SIZE = 256
EPOCHS_NUM = 200
LEARNING_RATE = 0.3
main(BATCH_SIZE, LEARNING_RATE, EPOCHS_NUM)
输出与可视化
第 001/200 轮,训练损失:2.3105,训练精度:10.09%,测试损失:2.3149,测试精度:10.00%
第 002/200 轮,训练损失:2.3083,训练精度:10.14%,测试损失:2.3204,测试精度:10.00%
第 003/200 轮,训练损失:2.3067,训练精度:10.08%,测试损失:2.3066,测试精度:10.00%
第 004/200 轮,训练损失:2.3053,训练精度:10.12%,测试损失:2.3059,测试精度:10.00%
第 005/200 轮,训练损失:2.2823,训练精度:13.79%,测试损失:2.1649,测试精度:24.98%
第 006/200 轮,训练损失:1.5717,训练精度:42.73%,测试损失:1.2325,测试精度:50.35%
第 007/200 轮,训练损失:1.1198,训练精度:56.12%,测试损失:1.0465,测试精度:58.59%
第 008/200 轮,训练损失:0.9639,训练精度:62.85%,测试损失:0.9262,测试精度:66.43%
第 009/200 轮,训练损失:0.8491,训练精度:68.36%,测试损失:0.8217,测试精度:70.62%
第 010/200 轮,训练损失:0.7814,训练精度:70.95%,测试损失:0.8526,测试精度:67.93%
第 011/200 轮,训练损失:0.7304,训练精度:72.75%,测试损失:0.7113,测试精度:73.10%
第 012/200 轮,训练损失:0.6906,训练精度:73.90%,测试损失:0.7325,测试精度:72.51%
第 013/200 轮,训练损失:0.6545,训练精度:74.81%,测试损失:0.6730,测试精度:73.23%
第 014/200 轮,训练损失:0.6227,训练精度:75.92%,测试损失:0.7097,测试精度:72.95%
第 015/200 轮,训练损失:0.6025,训练精度:76.48%,测试损失:0.6369,测试精度:76.09%
第 016/200 轮,训练损失:0.5848,训练精度:77.09%,测试损失:0.6101,测试精度:75.83%
第 017/200 轮,训练损失:0.5640,训练精度:78.01%,测试损失:0.5685,测试精度:77.85%
第 018/200 轮,训练损失:0.5492,训练精度:78.58%,测试损失:0.5565,测试精度:78.46%
第 019/200 轮,训练损失:0.5359,训练精度:79.28%,测试损失:0.5494,测试精度:79.32%
第 020/200 轮,训练损失:0.5209,训练精度:79.92%,测试损失:0.5757,测试精度:78.87%
第 021/200 轮,训练损失:0.5097,训练精度:80.50%,测试损失:0.5400,测试精度:79.54%
第 022/200 轮,训练损失:0.5019,训练精度:81.05%,测试损失:0.5546,测试精度:79.24%
第 023/200 轮,训练损失:0.4887,训练精度:81.59%,测试损失:0.6014,测试精度:77.46%
第 024/200 轮,训练损失:0.4790,训练精度:82.16%,测试损失:0.5094,测试精度:80.72%
第 025/200 轮,训练损失:0.4710,训练精度:82.68%,测试损失:0.5456,测试精度:79.91%
第 026/200 轮,训练损失:0.4592,训练精度:83.00%,测试损失:0.5715,测试精度:77.14%
第 027/200 轮,训练损失:0.4523,训练精度:83.22%,测试损失:0.4615,测试精度:82.83%
第 028/200 轮,训练损失:0.4478,训练精度:83.46%,测试损失:0.4720,测试精度:82.92%
第 029/200 轮,训练损失:0.4367,训练精度:83.91%,测试损失:0.4802,测试精度:82.56%
第 030/200 轮,训练损失:0.4292,训练精度:84.20%,测试损失:0.5128,测试精度:80.83%
第 031/200 轮,训练损失:0.4232,训练精度:84.49%,测试损失:0.4351,测试精度:83.89%
第 032/200 轮,训练损失:0.4199,训练精度:84.55%,测试损失:0.4835,测试精度:82.10%
第 033/200 轮,训练损失:0.4158,训练精度:84.64%,测试损失:0.5250,测试精度:80.14%
第 034/200 轮,训练损失:0.4094,训练精度:84.86%,测试损失:0.5035,测试精度:80.96%
第 035/200 轮,训练损失:0.4024,训练精度:85.16%,测试损失:0.4594,测试精度:82.57%
第 036/200 轮,训练损失:0.3975,训练精度:85.24%,测试损失:0.4145,测试精度:84.47%
第 037/200 轮,训练损失:0.3922,训练精度:85.52%,测试损失:0.4192,测试精度:84.70%
第 038/200 轮,训练损失:0.3862,训练精度:85.77%,测试损失:0.4115,测试精度:84.96%
第 039/200 轮,训练损失:0.3841,训练精度:85.81%,测试损失:0.4099,测试精度:85.04%
第 040/200 轮,训练损失:0.3806,训练精度:85.92%,测试损失:0.4252,测试精度:84.09%
第 041/200 轮,训练损失:0.3762,训练精度:86.07%,测试损失:0.4452,测试精度:83.03%
第 042/200 轮,训练损失:0.3723,训练精度:86.25%,测试损失:0.4044,测试精度:85.03%
第 043/200 轮,训练损失:0.3693,训练精度:86.43%,测试损失:0.4924,测试精度:80.68%
第 044/200 轮,训练损失:0.3664,训练精度:86.43%,测试损失:0.3931,测试精度:85.22%
第 045/200 轮,训练损失:0.3630,训练精度:86.50%,测试损失:0.4082,测试精度:85.08%
第 046/200 轮,训练损失:0.3584,训练精度:86.80%,测试损失:0.3865,测试精度:85.67%
第 047/200 轮,训练损失:0.3567,训练精度:86.70%,测试损失:0.3904,测试精度:85.19%
第 048/200 轮,训练损失:0.3506,训练精度:87.15%,测试损失:0.3777,测试精度:86.24%
第 049/200 轮,训练损失:0.3500,训练精度:87.05%,测试损失:0.4774,测试精度:81.82%
第 050/200 轮,训练损失:0.3463,训练精度:87.23%,测试损失:0.3690,测试精度:86.58%
第 051/200 轮,训练损失:0.3447,训练精度:87.27%,测试损失:0.3714,测试精度:86.30%
第 052/200 轮,训练损失:0.3382,训练精度:87.51%,测试损失:0.3832,测试精度:85.76%
第 053/200 轮,训练损失:0.3384,训练精度:87.52%,测试损失:0.3703,测试精度:85.99%
第 054/200 轮,训练损失:0.3357,训练精度:87.67%,测试损失:0.3579,测试精度:86.75%
第 055/200 轮,训练损失:0.3317,训练精度:87.78%,测试损失:0.3770,测试精度:86.61%
第 056/200 轮,训练损失:0.3291,训练精度:87.88%,测试损失:0.3609,测试精度:86.87%
第 057/200 轮,训练损失:0.3271,训练精度:87.93%,测试损失:0.4316,测试精度:83.85%
第 058/200 轮,训练损失:0.3262,训练精度:87.84%,测试损失:0.3880,测试精度:85.56%
第 059/200 轮,训练损失:0.3220,训练精度:88.15%,测试损失:0.3424,测试精度:86.96%
第 060/200 轮,训练损失:0.3195,训练精度:88.28%,测试损失:0.3661,测试精度:86.62%
第 061/200 轮,训练损失:0.3179,训练精度:88.30%,测试损失:0.3696,测试精度:86.19%
第 062/200 轮,训练损失:0.3140,训练精度:88.45%,测试损失:0.3611,测试精度:86.92%
第 063/200 轮,训练损失:0.3151,训练精度:88.30%,测试损失:0.3547,测试精度:86.89%
第 064/200 轮,训练损失:0.3111,训练精度:88.51%,测试损失:0.3530,测试精度:87.19%
第 065/200 轮,训练损失:0.3079,训练精度:88.57%,测试损失:0.3312,测试精度:87.77%
第 066/200 轮,训练损失:0.3063,训练精度:88.67%,测试损失:0.3451,测试精度:87.41%
第 067/200 轮,训练损失:0.3056,训练精度:88.71%,测试损失:0.3267,测试精度:87.93%
第 068/200 轮,训练损失:0.3035,训练精度:88.86%,测试损失:0.3515,测试精度:87.17%
第 069/200 轮,训练损失:0.3005,训练精度:89.06%,测试损失:0.3611,测试精度:86.68%
第 070/200 轮,训练损失:0.2993,训练精度:89.03%,测试损失:0.3528,测试精度:87.23%
第 071/200 轮,训练损失:0.2981,训练精度:88.95%,测试损失:0.3500,测试精度:87.65%
第 072/200 轮,训练损失:0.2958,训练精度:89.11%,测试损失:0.3379,测试精度:87.58%
第 073/200 轮,训练损失:0.2925,训练精度:89.21%,测试损失:0.3371,测试精度:87.80%
第 074/200 轮,训练损失:0.2953,训练精度:89.11%,测试损失:0.3256,测试精度:87.91%
第 075/200 轮,训练损失:0.2902,训练精度:89.26%,测试损失:0.3198,测试精度:88.29%
第 076/200 轮,训练损失:0.2889,训练精度:89.40%,测试损失:0.3240,测试精度:88.28%
第 077/200 轮,训练损失:0.2875,训练精度:89.35%,测试损失:0.3275,测试精度:88.15%
第 078/200 轮,训练损失:0.2858,训练精度:89.54%,测试损失:0.3057,测试精度:88.87%
第 079/200 轮,训练损失:0.2856,训练精度:89.41%,测试损失:0.3222,测试精度:87.96%
第 080/200 轮,训练损失:0.2834,训练精度:89.56%,测试损失:0.3315,测试精度:88.56%
第 081/200 轮,训练损失:0.2817,训练精度:89.58%,测试损失:0.3426,测试精度:87.23%
第 082/200 轮,训练损失:0.2783,训练精度:89.79%,测试损失:0.3307,测试精度:87.78%
第 083/200 轮,训练损失:0.2788,训练精度:89.80%,测试损失:0.3451,测试精度:87.19%
第 084/200 轮,训练损失:0.2773,训练精度:89.86%,测试损失:0.3138,测试精度:88.52%
第 085/200 轮,训练损失:0.2752,训练精度:89.89%,测试损失:0.3913,测试精度:85.53%
第 086/200 轮,训练损失:0.2738,训练精度:89.97%,测试损失:0.3310,测试精度:87.28%
第 087/200 轮,训练损失:0.2711,训练精度:89.90%,测试损失:0.2990,测试精度:89.07%
第 088/200 轮,训练损失:0.2697,训练精度:90.05%,测试损失:0.3045,测试精度:88.94%
第 089/200 轮,训练损失:0.2702,训练精度:90.03%,测试损失:0.3227,测试精度:88.05%
第 090/200 轮,训练损失:0.2689,训练精度:90.09%,测试损失:0.3127,测试精度:88.18%
第 091/200 轮,训练损失:0.2652,训练精度:90.27%,测试损失:0.3496,测试精度:87.22%
第 092/200 轮,训练损失:0.2662,训练精度:90.12%,测试损失:0.3256,测试精度:88.05%
第 093/200 轮,训练损失:0.2661,训练精度:90.24%,测试损失:0.3108,测试精度:88.91%
第 094/200 轮,训练损失:0.2621,训练精度:90.37%,测试损失:0.2983,测试精度:88.91%
第 095/200 轮,训练损失:0.2626,训练精度:90.28%,测试损失:0.2969,测试精度:89.00%
第 096/200 轮,训练损失:0.2604,训练精度:90.32%,测试损失:0.3478,测试精度:87.22%
第 097/200 轮,训练损失:0.2588,训练精度:90.53%,测试损失:0.2955,测试精度:88.88%
第 098/200 轮,训练损失:0.2575,训练精度:90.43%,测试损失:0.3306,测试精度:88.52%
第 099/200 轮,训练损失:0.2572,训练精度:90.56%,测试损失:0.2995,测试精度:89.38%
第 100/200 轮,训练损失:0.2545,训练精度:90.52%,测试损失:0.3077,测试精度:88.67%
第 101/200 轮,训练损失:0.2546,训练精度:90.56%,测试损失:0.3136,测试精度:88.09%
第 102/200 轮,训练损失:0.2550,训练精度:90.59%,测试损失:0.3871,测试精度:85.93%
第 103/200 轮,训练损失:0.2540,训练精度:90.56%,测试损失:0.3169,测试精度:88.05%
第 104/200 轮,训练损失:0.2492,训练精度:90.78%,测试损失:0.2944,测试精度:89.06%
第 105/200 轮,训练损失:0.2511,训练精度:90.62%,测试损失:0.3120,测试精度:88.51%
第 106/200 轮,训练损失:0.2493,训练精度:90.80%,测试损失:0.3059,测试精度:88.98%
第 107/200 轮,训练损失:0.2490,训练精度:90.78%,测试损失:0.2892,测试精度:89.54%
第 108/200 轮,训练损失:0.2468,训练精度:90.87%,测试损失:0.2884,测试精度:89.66%
第 109/200 轮,训练损失:0.2445,训练精度:90.99%,测试损失:0.3127,测试精度:88.87%
第 110/200 轮,训练损失:0.2447,训练精度:90.85%,测试损失:0.3002,测试精度:88.96%
第 111/200 轮,训练损失:0.2463,训练精度:90.81%,测试损失:0.2989,测试精度:89.18%
第 112/200 轮,训练损失:0.2429,训练精度:90.99%,测试损失:0.3085,测试精度:88.57%
第 113/200 轮,训练损失:0.2441,训练精度:90.98%,测试损失:0.3123,测试精度:88.80%
第 114/200 轮,训练损失:0.2397,训练精度:91.17%,测试损失:0.2916,测试精度:89.18%
第 115/200 轮,训练损失:0.2383,训练精度:91.25%,测试损失:0.2755,测试精度:89.97%
第 116/200 轮,训练损失:0.2377,训练精度:91.32%,测试损失:0.3022,测试精度:88.88%
第 117/200 轮,训练损失:0.2377,训练精度:91.16%,测试损失:0.3196,测试精度:88.74%
第 118/200 轮,训练损失:0.2380,训练精度:91.18%,测试损失:0.3153,测试精度:88.65%
第 119/200 轮,训练损失:0.2351,训练精度:91.36%,测试损失:0.3090,测试精度:88.85%
第 120/200 轮,训练损失:0.2359,训练精度:91.17%,测试损失:0.2940,测试精度:89.78%
第 121/200 轮,训练损失:0.2348,训练精度:91.29%,测试损失:0.4029,测试精度:84.85%
第 122/200 轮,训练损失:0.2332,训练精度:91.30%,测试损失:0.2910,测试精度:89.88%
第 123/200 轮,训练损失:0.2326,训练精度:91.31%,测试损失:0.2814,测试精度:89.62%
第 124/200 轮,训练损失:0.2317,训练精度:91.35%,测试损失:0.3103,测试精度:88.67%
第 125/200 轮,训练损失:0.2309,训练精度:91.43%,测试损失:0.2829,测试精度:89.83%
第 126/200 轮,训练损失:0.2282,训练精度:91.58%,测试损失:0.3102,测试精度:88.45%
第 127/200 轮,训练损失:0.2309,训练精度:91.38%,测试损失:0.2933,测试精度:89.30%
第 128/200 轮,训练损失:0.2260,训练精度:91.64%,测试损失:0.2957,测试精度:89.47%
第 129/200 轮,训练损失:0.2265,训练精度:91.62%,测试损失:0.3134,测试精度:88.21%
第 130/200 轮,训练损失:0.2251,训练精度:91.70%,测试损失:0.2980,测试精度:89.26%
第 131/200 轮,训练损失:0.2246,训练精度:91.62%,测试损失:0.3078,测试精度:88.91%
第 132/200 轮,训练损失:0.2245,训练精度:91.66%,测试损失:0.2930,测试精度:89.50%
第 133/200 轮,训练损失:0.2223,训练精度:91.77%,测试损失:0.2933,测试精度:89.16%
第 134/200 轮,训练损失:0.2245,训练精度:91.54%,测试损失:0.2867,测试精度:89.71%
第 135/200 轮,训练损失:0.2217,训练精度:91.78%,测试损失:0.2818,测试精度:89.62%
第 136/200 轮,训练损失:0.2206,训练精度:91.89%,测试损失:0.3124,测试精度:88.45%
第 137/200 轮,训练损失:0.2209,训练精度:91.67%,测试损失:0.2871,测试精度:89.51%
第 138/200 轮,训练损失:0.2191,训练精度:91.88%,测试损失:0.2755,测试精度:90.10%
第 139/200 轮,训练损失:0.2168,训练精度:92.00%,测试损失:0.3183,测试精度:88.66%
第 140/200 轮,训练损失:0.2189,训练精度:91.94%,测试损失:0.2711,测试精度:89.87%
第 141/200 轮,训练损失:0.2164,训练精度:92.00%,测试损失:0.2713,测试精度:90.29%
第 142/200 轮,训练损失:0.2147,训练精度:92.07%,测试损失:0.2765,测试精度:90.11%
第 143/200 轮,训练损失:0.2148,训练精度:91.97%,测试损失:0.2768,测试精度:90.01%
第 144/200 轮,训练损失:0.2135,训练精度:92.14%,测试损失:0.2859,测试精度:89.87%
第 145/200 轮,训练损失:0.2145,训练精度:92.04%,测试损失:0.3210,测试精度:88.55%
第 146/200 轮,训练损失:0.2131,训练精度:92.11%,测试损失:0.2771,测试精度:90.21%
第 147/200 轮,训练损失:0.2106,训练精度:92.21%,测试损失:0.2675,测试精度:90.51%
第 148/200 轮,训练损失:0.2124,训练精度:92.06%,测试损失:0.2623,测试精度:90.22%
第 149/200 轮,训练损失:0.2102,训练精度:92.19%,测试损失:0.2910,测试精度:89.89%
第 150/200 轮,训练损失:0.2098,训练精度:92.25%,测试损失:0.2923,测试精度:89.66%
第 151/200 轮,训练损失:0.2100,训练精度:92.18%,测试损失:0.2853,测试精度:89.93%
第 152/200 轮,训练损失:0.2085,训练精度:92.25%,测试损失:0.2671,测试精度:90.19%
第 153/200 轮,训练损失:0.2082,训练精度:92.32%,测试损失:0.2970,测试精度:89.95%
第 154/200 轮,训练损失:0.2069,训练精度:92.37%,测试损失:0.2806,测试精度:90.10%
第 155/200 轮,训练损失:0.2060,训练精度:92.41%,测试损失:0.2833,测试精度:89.43%
第 156/200 轮,训练损失:0.2053,训练精度:92.42%,测试损失:0.2780,测试精度:90.14%
第 157/200 轮,训练损失:0.2066,训练精度:92.30%,测试损失:0.3018,测试精度:89.14%
第 158/200 轮,训练损失:0.2045,训练精度:92.45%,测试损失:0.2917,测试精度:89.37%
第 159/200 轮,训练损失:0.2020,训练精度:92.57%,测试损失:0.2978,测试精度:90.23%
第 160/200 轮,训练损失:0.2040,训练精度:92.45%,测试损失:0.2852,测试精度:89.85%
第 161/200 轮,训练损失:0.2042,训练精度:92.53%,测试损失:0.2642,测试精度:90.64%
第 162/200 轮,训练损失:0.2000,训练精度:92.55%,测试损失:0.2593,测试精度:90.69%
第 163/200 轮,训练损失:0.2005,训练精度:92.59%,测试损失:0.2759,测试精度:90.06%
第 164/200 轮,训练损失:0.2000,训练精度:92.67%,测试损失:0.2965,测试精度:89.46%
第 165/200 轮,训练损失:0.1999,训练精度:92.58%,测试损失:0.3048,测试精度:89.34%
第 166/200 轮,训练损失:0.1979,训练精度:92.66%,测试损失:0.2816,测试精度:90.04%
第 167/200 轮,训练损失:0.1995,训练精度:92.51%,测试损失:0.2986,测试精度:88.98%
第 168/200 轮,训练损失:0.1958,训练精度:92.70%,测试损失:0.2643,测试精度:90.53%
第 169/200 轮,训练损失:0.1972,训练精度:92.83%,测试损失:0.2854,测试精度:89.53%
第 170/200 轮,训练损失:0.1964,训练精度:92.63%,测试损失:0.2749,测试精度:90.02%
第 171/200 轮,训练损失:0.1952,训练精度:92.80%,测试损失:0.2756,测试精度:90.29%
第 172/200 轮,训练损失:0.1946,训练精度:92.79%,测试损失:0.2754,测试精度:90.16%
第 173/200 轮,训练损失:0.1945,训练精度:92.77%,测试损失:0.2761,测试精度:90.31%
第 174/200 轮,训练损失:0.1920,训练精度:92.88%,测试损失:0.2813,测试精度:89.95%
第 175/200 轮,训练损失:0.1930,训练精度:92.81%,测试损失:0.2889,测试精度:89.14%
第 176/200 轮,训练损失:0.1921,训练精度:92.91%,测试损失:0.2581,测试精度:90.85%
第 177/200 轮,训练损失:0.1935,训练精度:92.77%,测试损失:0.2553,测试精度:90.62%
第 178/200 轮,训练损失:0.1901,训练精度:93.05%,测试损失:0.2622,测试精度:90.93%
第 179/200 轮,训练损失:0.1890,训练精度:93.03%,测试损失:0.2690,测试精度:90.15%
第 180/200 轮,训练损失:0.1897,训练精度:92.93%,测试损失:0.2624,测试精度:90.57%
第 181/200 轮,训练损失:0.1890,训练精度:93.07%,测试损失:0.2744,测试精度:90.32%
第 182/200 轮,训练损失:0.1864,训练精度:93.14%,测试损失:0.2661,测试精度:90.51%
第 183/200 轮,训练损失:0.1883,训练精度:92.91%,测试损失:0.2682,测试精度:90.68%
第 184/200 轮,训练损失:0.1872,训练精度:93.11%,测试损失:0.2831,测试精度:89.94%
第 185/200 轮,训练损失:0.1852,训练精度:93.15%,测试损失:0.2849,测试精度:89.76%
第 186/200 轮,训练损失:0.1869,训练精度:93.01%,测试损失:0.2776,测试精度:89.91%
第 187/200 轮,训练损失:0.1828,训练精度:93.22%,测试损失:0.2624,测试精度:90.75%
第 188/200 轮,训练损失:0.1854,训练精度:93.04%,测试损失:0.2801,测试精度:90.30%
第 189/200 轮,训练损失:0.1838,训练精度:93.16%,测试损失:0.2848,测试精度:89.66%
第 190/200 轮,训练损失:0.1815,训练精度:93.22%,测试损失:0.2716,测试精度:90.19%
第 191/200 轮,训练损失:0.1827,训练精度:93.22%,测试损失:0.2582,测试精度:90.85%
第 192/200 轮,训练损失:0.1808,训练精度:93.31%,测试损失:0.2636,测试精度:90.55%
第 193/200 轮,训练损失:0.1810,训练精度:93.30%,测试损失:0.2832,测试精度:89.98%
第 194/200 轮,训练损失:0.1822,训练精度:93.27%,测试损失:0.2660,测试精度:90.46%
第 195/200 轮,训练损失:0.1808,训练精度:93.23%,测试损失:0.2788,测试精度:90.27%
第 196/200 轮,训练损失:0.1788,训练精度:93.33%,测试损失:0.2679,测试精度:90.38%
第 197/200 轮,训练损失:0.1785,训练精度:93.38%,测试损失:0.2580,测试精度:91.00%
第 198/200 轮,训练损失:0.1786,训练精度:93.36%,测试损失:0.2713,测试精度:90.24%
第 199/200 轮,训练损失:0.1768,训练精度:93.41%,测试损失:0.2956,测试精度:89.88%
第 200/200 轮,训练损失:0.1785,训练精度:93.33%,测试损失:0.2551,测试精度:91.06%
欢迎访问我的笔记:🌊 卷积神经网络 (LeNet) · 语雀