Python训练营打卡 Day45

发布于:2025-06-06 ⋅ 阅读:(14) ⋅ 点赞:(0)

Tensorboard使用介绍

知识点回顾:

  1. tensorboard的发展历史和原理
  2. tensorboard的常见操作
  3. tensorboard在cifar上的实战:MLP和CNN模型

TensorBoard 的使用介绍

1. TensorBoard 的发展历史和原理
  • 发展历史:TensorBoard 最初是作为 TensorFlow 的“厨房日志系统”开发的,用于记录和展示烹饪过程中的各种数据,后来逐渐发展为一个独立的工具,支持多种厨房(机器学习框架)。

  • 原理:TensorBoard 通过在烹饪过程中记录详细的日志(训练过程中的各种指标),然后读取这些日志文件来展示烹饪过程中的温度(损失)、食材质量(准确率)等信息。

2. TensorBoard 的常见操作
  • 记录日志:在烹饪过程中,厨师(模型)会将每个步骤的关键数据(如火候、调味料用量)记录在日志本(SummaryWriter)上。

  • 可视化指标:通过 TensorBoard 的展示界面,可以直观地看到每个菜品(模型)的烹饪过程中的温度变化(损失变化)、顾客满意度(准确率)等。

  • 查看计算图:可以将厨房的布局和工作流程(模型结构)画成图,通过 TensorBoard 查看整个厨房的工作流程。

  • 分布和直方图:记录每种食材的使用量和质量分布,帮助厨师了解食材的使用情况。

3. TensorBoard 在 CIFAR 上的实战:MLP 和 CNN 模型
  • 效果图展示:通过 TensorBoard 可以直观地展示 MLP 和 CNN 模型在 CIFAR-10 数据集上的训练过程,包括损失和准确率的变化,非常适合用于组会汇报。

效果展示如下,很适合拿去组会汇报撑页数:

作业:对resnet18在cifar10上采用微调策略下,用tensorboard监控训练过程。

PS:

  1. tensorboard和torch版本存在一定的不兼容性,如果报错请新建环境尝试。
  2. tensorboard的代码还有有一定的记忆量,实际上深度学习的经典代码都是类似于八股文,看多了就习惯了,难度远远小于考研数学等需要思考的内容
  3. 实际上对目前的ai而言,你只需要先完成最简单的demo,然后让他给你加上tensorboard需要打印的部分即可。---核心是弄懂tensorboard可以打印什么信息,以及如何看可视化后的结果,把ai当成记忆大师用到的时候通过它来调取对应的代码即可。
import os
import torch
import torch.nn as nn
import torch.optim as optim
import torchvision
import torchvision.transforms as transforms
from torch.utils.data import DataLoader
from torch.utils.tensorboard import SummaryWriter
 
# 定义MLP模型
class MLP(nn.Module):
    def __init__(self):
        super(MLP, self).__init__()
        self.fc1 = nn.Linear(32*32*3, 512)
        self.fc2 = nn.Linear(512, 256)
        self.fc3 = nn.Linear(256, 10)
        self.relu = nn.ReLU()
        self.dropout = nn.Dropout(0.5)
    
    def forward(self, x):
        x = x.view(x.size(0), -1)
        x = self.relu(self.fc1(x))
        x = self.dropout(x)
        x = self.relu(self.fc2(x))
        x = self.dropout(x)
        x = self.fc3(x)
        return x
 
# 数据加载
def load_data(batch_size=64, is_train=True):
    transform = transforms.Compose([
        transforms.ToTensor(),
        transforms.Normalize((0.5, 0.5, 0.5), (0.5, 0.5, 0.5))
    ])
    
    dataset = torchvision.datasets.CIFAR10(
        root='./data', 
        train=is_train,
        download=True,
        transform=transform
    )
    
    return DataLoader(dataset, batch_size=batch_size, shuffle=is_train)
 
# 训练函数
def train(model, train_loader, test_loader, criterion, optimizer, epochs=20):
    # 自动管理日志目录
    log_dir = 'runs/cifar10_mlp_experiment'
    if os.path.exists(log_dir):
        i = 1
        while os.path.exists(f"{log_dir}_{i}"):
            i += 1
        log_dir = f"{log_dir}_{i}"
    writer = SummaryWriter(log_dir)
    
    print(f"TensorBoard日志保存在: {log_dir}")
    print(f"训练完成后,使用命令 `tensorboard --logdir=runs` 启动TensorBoard查看可视化结果")
    
    global_step = 0
    for epoch in range(epochs):
        model.train()
        running_loss = 0.0
        correct = 0
        total = 0
        
        for batch_idx, (inputs, labels) in enumerate(train_loader):
            optimizer.zero_grad()
            outputs = model(inputs)
            loss = criterion(outputs, labels)
            loss.backward()
            optimizer.step()
            
            # 记录batch损失和准确率
            _, predicted = torch.max(outputs.data, 1)
            total += labels.size(0)
            correct += (predicted == labels).sum().item()
            batch_acc = 100 * correct / total
            
            writer.add_scalar('Train/Batch_Loss', loss.item(), global_step)
            writer.add_scalar('Train/Batch_Accuracy', batch_acc, global_step)
            
            # 每500个batch记录权重和梯度分布
            if (batch_idx + 1) % 500 == 0:
                for name, param in model.named_parameters():
                    writer.add_histogram(f'weights/{name}', param, global_step)
                    if param.grad is not None:
                        writer.add_histogram(f'grads/{name}', param.grad, global_step)
            
            running_loss += loss.item()
            if batch_idx % 100 == 99:  # 每100个batch打印一次
                avg_loss = running_loss / 100
                print(f'Epoch: {epoch+1}/{epochs} | Batch: {batch_idx+1}/{len(train_loader)} | 单Batch损失: {loss.item():.4f} | 累计平均损失: {avg_loss:.4f}')
                running_loss = 0.0
            
            global_step += 1
        
        # 记录epoch训练指标
        epoch_train_acc = 100 * correct / len(train_loader.dataset)
        epoch_train_loss = running_loss / len(train_loader)
        writer.add_scalar('Train/Epoch_Loss', epoch_train_loss, epoch)
        writer.add_scalar('Train/Epoch_Accuracy', epoch_train_acc, epoch)
        
        # 测试集评估
        test_acc, test_loss = evaluate(model, test_loader, criterion)
        writer.add_scalar('Test/Loss', test_loss, epoch)
        writer.add_scalar('Test/Accuracy', test_acc, epoch)
        
        print(f'Epoch {epoch+1}/{epochs} 完成 | 训练准确率: {epoch_train_acc:.2f}% | 测试准确率: {test_acc:.2f}%')
    
    writer.close()
 
# 评估函数
def evaluate(model, test_loader, criterion):
    model.eval()
    test_loss = 0
    correct = 0
    total = 0
    
    with torch.no_grad():
        for inputs, labels in test_loader:
            outputs = model(inputs)
            loss = criterion(outputs, labels)
            test_loss += loss.item()
            _, predicted = torch.max(outputs.data, 1)
            total += labels.size(0)
            correct += (predicted == labels).sum().item()
    
    test_loss /= len(test_loader)
    test_acc = 100 * correct / total
    return test_acc, test_loss
 
if __name__ == '__main__':
    # 初始化模型、损失函数和优化器
    model = MLP()
    criterion = nn.CrossEntropyLoss()
    optimizer = optim.Adam(model.parameters(), lr=0.001)
    
    # 加载数据
    train_loader = load_data(is_train=True)
    test_loader = load_data(is_train=False)
    
    # 记录模型结构
    sample_inputs, _ = next(iter(train_loader))
    writer = SummaryWriter()
    writer.add_graph(model, sample_inputs)
    writer.close()
    
    # 开始训练
    print("开始训练模型...")
    train(model, train_loader, test_loader, criterion, optimizer)
    print("训练完成!")
Epoch: 1/20 | Batch: 100/782 | 单Batch损失: 1.8002 | 累计平均损失: 2.0379
Epoch: 1/20 | Batch: 200/782 | 单Batch损失: 1.8952 | 累计平均损失: 1.9033
Epoch: 1/20 | Batch: 300/782 | 单Batch损失: 2.0089 | 累计平均损失: 1.8605
Epoch: 1/20 | Batch: 400/782 | 单Batch损失: 1.7509 | 累计平均损失: 1.8155
Epoch: 1/20 | Batch: 500/782 | 单Batch损失: 1.7406 | 累计平均损失: 1.8347
Epoch: 1/20 | Batch: 600/782 | 单Batch损失: 1.9998 | 累计平均损失: 1.8054
Epoch: 1/20 | Batch: 700/782 | 单Batch损失: 1.9656 | 累计平均损失: 1.7993
Epoch 1/20 完成 | 训练准确率: 33.81% | 测试准确率: 43.34%
Epoch: 2/20 | Batch: 100/782 | 单Batch损失: 1.6782 | 累计平均损失: 1.7376
Epoch: 2/20 | Batch: 200/782 | 单Batch损失: 1.8442 | 累计平均损失: 1.7416
Epoch: 2/20 | Batch: 300/782 | 单Batch损失: 1.7564 | 累计平均损失: 1.7360
Epoch: 2/20 | Batch: 400/782 | 单Batch损失: 1.6342 | 累计平均损失: 1.7550
Epoch: 2/20 | Batch: 500/782 | 单Batch损失: 1.7706 | 累计平均损失: 1.7489
Epoch: 2/20 | Batch: 600/782 | 单Batch损失: 1.6897 | 累计平均损失: 1.7382
Epoch: 2/20 | Batch: 700/782 | 单Batch损失: 1.9042 | 累计平均损失: 1.7580
Epoch 2/20 完成 | 训练准确率: 37.90% | 测试准确率: 44.39%
Epoch: 3/20 | Batch: 100/782 | 单Batch损失: 1.6119 | 累计平均损失: 1.7180
Epoch: 3/20 | Batch: 200/782 | 单Batch损失: 1.7927 | 累计平均损失: 1.7104
Epoch: 3/20 | Batch: 300/782 | 单Batch损失: 1.7190 | 累计平均损失: 1.7228
Epoch: 3/20 | Batch: 400/782 | 单Batch损失: 1.6828 | 累计平均损失: 1.7046
Epoch: 3/20 | Batch: 500/782 | 单Batch损失: 1.7059 | 累计平均损失: 1.6852
Epoch: 3/20 | Batch: 600/782 | 单Batch损失: 1.6125 | 累计平均损失: 1.6841
Epoch: 3/20 | Batch: 700/782 | 单Batch损失: 1.6480 | 累计平均损失: 1.6988
Epoch 3/20 完成 | 训练准确率: 39.71% | 测试准确率: 45.48%
Epoch: 4/20 | Batch: 100/782 | 单Batch损失: 1.6074 | 累计平均损失: 1.6999
Epoch: 4/20 | Batch: 200/782 | 单Batch损失: 1.9138 | 累计平均损失: 1.6771
Epoch: 4/20 | Batch: 300/782 | 单Batch损失: 1.7157 | 累计平均损失: 1.6825
Epoch: 4/20 | Batch: 400/782 | 单Batch损失: 1.8453 | 累计平均损失: 1.6723
Epoch: 4/20 | Batch: 500/782 | 单Batch损失: 1.4797 | 累计平均损失: 1.6797
Epoch: 4/20 | Batch: 600/782 | 单Batch损失: 1.7863 | 累计平均损失: 1.6902
Epoch: 4/20 | Batch: 700/782 | 单Batch损失: 1.7832 | 累计平均损失: 1.7038
Epoch 4/20 完成 | 训练准确率: 40.31% | 测试准确率: 46.12%
Epoch: 5/20 | Batch: 100/782 | 单Batch损失: 1.6709 | 累计平均损失: 1.6469
Epoch: 5/20 | Batch: 200/782 | 单Batch损失: 1.6557 | 累计平均损失: 1.6466
Epoch: 5/20 | Batch: 300/782 | 单Batch损失: 1.5419 | 累计平均损失: 1.6486
Epoch: 5/20 | Batch: 400/782 | 单Batch损失: 1.5667 | 累计平均损失: 1.6600
Epoch: 5/20 | Batch: 500/782 | 单Batch损失: 1.3893 | 累计平均损失: 1.6499
Epoch: 5/20 | Batch: 600/782 | 单Batch损失: 1.5675 | 累计平均损失: 1.6773
Epoch: 5/20 | Batch: 700/782 | 单Batch损失: 1.8342 | 累计平均损失: 1.6685
Epoch 5/20 完成 | 训练准确率: 41.41% | 测试准确率: 46.78%
Epoch: 6/20 | Batch: 100/782 | 单Batch损失: 1.8068 | 累计平均损失: 1.6426
Epoch: 6/20 | Batch: 200/782 | 单Batch损失: 1.8440 | 累计平均损失: 1.6238
Epoch: 6/20 | Batch: 300/782 | 单Batch损失: 1.7962 | 累计平均损失: 1.6426
Epoch: 6/20 | Batch: 400/782 | 单Batch损失: 1.5874 | 累计平均损失: 1.6376
Epoch: 6/20 | Batch: 500/782 | 单Batch损失: 1.5903 | 累计平均损失: 1.6411
Epoch: 6/20 | Batch: 600/782 | 单Batch损失: 1.6069 | 累计平均损失: 1.6555
Epoch: 6/20 | Batch: 700/782 | 单Batch损失: 1.7374 | 累计平均损失: 1.6440
Epoch 6/20 完成 | 训练准确率: 41.92% | 测试准确率: 46.82%
Epoch: 7/20 | Batch: 100/782 | 单Batch损失: 1.5096 | 累计平均损失: 1.6193
Epoch: 7/20 | Batch: 200/782 | 单Batch损失: 1.7903 | 累计平均损失: 1.5957
Epoch: 7/20 | Batch: 300/782 | 单Batch损失: 1.5088 | 累计平均损失: 1.6448
Epoch: 7/20 | Batch: 400/782 | 单Batch损失: 1.4998 | 累计平均损失: 1.6085
Epoch: 7/20 | Batch: 500/782 | 单Batch损失: 1.3046 | 累计平均损失: 1.6330
Epoch: 7/20 | Batch: 600/782 | 单Batch损失: 1.6198 | 累计平均损失: 1.6280
Epoch: 7/20 | Batch: 700/782 | 单Batch损失: 1.9460 | 累计平均损失: 1.6190
Epoch 7/20 完成 | 训练准确率: 42.72% | 测试准确率: 47.18%
Epoch: 8/20 | Batch: 100/782 | 单Batch损失: 1.7024 | 累计平均损失: 1.6040
Epoch: 8/20 | Batch: 200/782 | 单Batch损失: 1.6996 | 累计平均损失: 1.5930
Epoch: 8/20 | Batch: 300/782 | 单Batch损失: 1.9180 | 累计平均损失: 1.5948
Epoch: 8/20 | Batch: 400/782 | 单Batch损失: 1.5610 | 累计平均损失: 1.5956
Epoch: 8/20 | Batch: 500/782 | 单Batch损失: 1.5334 | 累计平均损失: 1.5895
Epoch: 8/20 | Batch: 600/782 | 单Batch损失: 1.4812 | 累计平均损失: 1.5886
Epoch: 8/20 | Batch: 700/782 | 单Batch损失: 1.4973 | 累计平均损失: 1.6098
Epoch 8/20 完成 | 训练准确率: 43.08% | 测试准确率: 47.88%
Epoch: 9/20 | Batch: 100/782 | 单Batch损失: 1.5032 | 累计平均损失: 1.5778
Epoch: 9/20 | Batch: 200/782 | 单Batch损失: 1.4106 | 累计平均损失: 1.5535
Epoch: 9/20 | Batch: 300/782 | 单Batch损失: 1.6568 | 累计平均损失: 1.5791
Epoch: 9/20 | Batch: 400/782 | 单Batch损失: 1.5178 | 累计平均损失: 1.5943
Epoch: 9/20 | Batch: 500/782 | 单Batch损失: 1.4842 | 累计平均损失: 1.6139
Epoch: 9/20 | Batch: 600/782 | 单Batch损失: 1.5095 | 累计平均损失: 1.6122
Epoch: 9/20 | Batch: 700/782 | 单Batch损失: 1.5301 | 累计平均损失: 1.5813
Epoch 9/20 完成 | 训练准确率: 43.61% | 测试准确率: 47.48%
Epoch: 10/20 | Batch: 100/782 | 单Batch损失: 1.6127 | 累计平均损失: 1.5765
Epoch: 10/20 | Batch: 200/782 | 单Batch损失: 1.5259 | 累计平均损失: 1.5787
Epoch: 10/20 | Batch: 300/782 | 单Batch损失: 1.5663 | 累计平均损失: 1.5902
Epoch: 10/20 | Batch: 400/782 | 单Batch损失: 1.6867 | 累计平均损失: 1.5823
Epoch: 10/20 | Batch: 500/782 | 单Batch损失: 1.7116 | 累计平均损失: 1.5688
Epoch: 10/20 | Batch: 600/782 | 单Batch损失: 1.6760 | 累计平均损失: 1.5852
Epoch: 10/20 | Batch: 700/782 | 单Batch损失: 1.6185 | 累计平均损失: 1.5930
Epoch 10/20 完成 | 训练准确率: 44.11% | 测试准确率: 48.58%
Epoch: 11/20 | Batch: 100/782 | 单Batch损失: 1.6500 | 累计平均损失: 1.5527
Epoch: 11/20 | Batch: 200/782 | 单Batch损失: 1.6778 | 累计平均损失: 1.5698
Epoch: 11/20 | Batch: 300/782 | 单Batch损失: 1.5765 | 累计平均损失: 1.5978
Epoch: 11/20 | Batch: 400/782 | 单Batch损失: 1.6958 | 累计平均损失: 1.5510
Epoch: 11/20 | Batch: 500/782 | 单Batch损失: 1.5038 | 累计平均损失: 1.5683
Epoch: 11/20 | Batch: 600/782 | 单Batch损失: 1.4215 | 累计平均损失: 1.5924
Epoch: 11/20 | Batch: 700/782 | 单Batch损失: 1.5648 | 累计平均损失: 1.5841
Epoch 11/20 完成 | 训练准确率: 44.05% | 测试准确率: 47.54%
Epoch: 12/20 | Batch: 100/782 | 单Batch损失: 1.5177 | 累计平均损失: 1.5576
Epoch: 12/20 | Batch: 200/782 | 单Batch损失: 1.6010 | 累计平均损失: 1.5353
Epoch: 12/20 | Batch: 300/782 | 单Batch损失: 1.4473 | 累计平均损失: 1.5319
Epoch: 12/20 | Batch: 400/782 | 单Batch损失: 1.6128 | 累计平均损失: 1.5583
Epoch: 12/20 | Batch: 500/782 | 单Batch损失: 1.4381 | 累计平均损失: 1.5486
Epoch: 12/20 | Batch: 600/782 | 单Batch损失: 1.5977 | 累计平均损失: 1.5607
Epoch: 12/20 | Batch: 700/782 | 单Batch损失: 1.6732 | 累计平均损失: 1.5735
Epoch 12/20 完成 | 训练准确率: 44.74% | 测试准确率: 47.99%
Epoch: 13/20 | Batch: 100/782 | 单Batch损失: 1.6179 | 累计平均损失: 1.5237
Epoch: 13/20 | Batch: 200/782 | 单Batch损失: 1.7966 | 累计平均损失: 1.5656
Epoch: 13/20 | Batch: 300/782 | 单Batch损失: 1.3527 | 累计平均损失: 1.5499
Epoch: 13/20 | Batch: 400/782 | 单Batch损失: 1.4959 | 累计平均损失: 1.5446
Epoch: 13/20 | Batch: 500/782 | 单Batch损失: 1.4859 | 累计平均损失: 1.5545
Epoch: 13/20 | Batch: 600/782 | 单Batch损失: 1.6439 | 累计平均损失: 1.5316
Epoch: 13/20 | Batch: 700/782 | 单Batch损失: 1.7502 | 累计平均损失: 1.5577
Epoch 13/20 完成 | 训练准确率: 44.93% | 测试准确率: 48.69%
Epoch: 14/20 | Batch: 100/782 | 单Batch损失: 1.4568 | 累计平均损失: 1.5288
Epoch: 14/20 | Batch: 200/782 | 单Batch损失: 1.4440 | 累计平均损失: 1.5270
Epoch: 14/20 | Batch: 300/782 | 单Batch损失: 1.6051 | 累计平均损失: 1.5540
Epoch: 14/20 | Batch: 400/782 | 单Batch损失: 1.4447 | 累计平均损失: 1.5211
Epoch: 14/20 | Batch: 500/782 | 单Batch损失: 1.4426 | 累计平均损失: 1.5254
Epoch: 14/20 | Batch: 600/782 | 单Batch损失: 1.4277 | 累计平均损失: 1.5543
Epoch: 14/20 | Batch: 700/782 | 单Batch损失: 1.6138 | 累计平均损失: 1.5226
Epoch 14/20 完成 | 训练准确率: 45.76% | 测试准确率: 48.91%
Epoch: 15/20 | Batch: 100/782 | 单Batch损失: 1.5069 | 累计平均损失: 1.4842
Epoch: 15/20 | Batch: 200/782 | 单Batch损失: 1.6512 | 累计平均损失: 1.5236
Epoch: 15/20 | Batch: 300/782 | 单Batch损失: 1.4177 | 累计平均损失: 1.5169
Epoch: 15/20 | Batch: 400/782 | 单Batch损失: 1.3404 | 累计平均损失: 1.5072
Epoch: 15/20 | Batch: 500/782 | 单Batch损失: 1.6667 | 累计平均损失: 1.5641
Epoch: 15/20 | Batch: 600/782 | 单Batch损失: 1.6065 | 累计平均损失: 1.5528
Epoch: 15/20 | Batch: 700/782 | 单Batch损失: 1.4698 | 累计平均损失: 1.5457
Epoch 15/20 完成 | 训练准确率: 45.97% | 测试准确率: 49.40%
Epoch: 16/20 | Batch: 100/782 | 单Batch损失: 1.5227 | 累计平均损失: 1.4716
Epoch: 16/20 | Batch: 200/782 | 单Batch损失: 1.5226 | 累计平均损失: 1.4971
Epoch: 16/20 | Batch: 300/782 | 单Batch损失: 1.5962 | 累计平均损失: 1.5150
Epoch: 16/20 | Batch: 400/782 | 单Batch损失: 1.4144 | 累计平均损失: 1.5462
Epoch: 16/20 | Batch: 500/782 | 单Batch损失: 1.3991 | 累计平均损失: 1.5291
Epoch: 16/20 | Batch: 600/782 | 单Batch损失: 1.3412 | 累计平均损失: 1.5317
Epoch: 16/20 | Batch: 700/782 | 单Batch损失: 1.4689 | 累计平均损失: 1.5318
Epoch 16/20 完成 | 训练准确率: 46.35% | 测试准确率: 48.25%
Epoch: 17/20 | Batch: 100/782 | 单Batch损失: 1.6156 | 累计平均损失: 1.5155
Epoch: 17/20 | Batch: 200/782 | 单Batch损失: 1.4089 | 累计平均损失: 1.4930
Epoch: 17/20 | Batch: 300/782 | 单Batch损失: 1.3682 | 累计平均损失: 1.5127
Epoch: 17/20 | Batch: 400/782 | 单Batch损失: 1.5191 | 累计平均损失: 1.5393
Epoch: 17/20 | Batch: 500/782 | 单Batch损失: 1.7968 | 累计平均损失: 1.5100
Epoch: 17/20 | Batch: 600/782 | 单Batch损失: 1.5981 | 累计平均损失: 1.5158
Epoch: 17/20 | Batch: 700/782 | 单Batch损失: 1.5971 | 累计平均损失: 1.5228
Epoch 17/20 完成 | 训练准确率: 46.08% | 测试准确率: 48.24%
Epoch: 18/20 | Batch: 100/782 | 单Batch损失: 1.8611 | 累计平均损失: 1.4594
Epoch: 18/20 | Batch: 200/782 | 单Batch损失: 1.6692 | 累计平均损失: 1.5040
Epoch: 18/20 | Batch: 300/782 | 单Batch损失: 1.3119 | 累计平均损失: 1.5085
Epoch: 18/20 | Batch: 400/782 | 单Batch损失: 1.5099 | 累计平均损失: 1.4964
Epoch: 18/20 | Batch: 500/782 | 单Batch损失: 1.5909 | 累计平均损失: 1.5144
Epoch: 18/20 | Batch: 600/782 | 单Batch损失: 1.7846 | 累计平均损失: 1.5060
Epoch: 18/20 | Batch: 700/782 | 单Batch损失: 1.4635 | 累计平均损失: 1.5301
Epoch 18/20 完成 | 训练准确率: 46.85% | 测试准确率: 49.05%
Epoch: 19/20 | Batch: 100/782 | 单Batch损失: 1.2420 | 累计平均损失: 1.4845
Epoch: 19/20 | Batch: 200/782 | 单Batch损失: 1.3399 | 累计平均损失: 1.4896
Epoch: 19/20 | Batch: 300/782 | 单Batch损失: 1.3264 | 累计平均损失: 1.4966
Epoch: 19/20 | Batch: 400/782 | 单Batch损失: 1.5312 | 累计平均损失: 1.4836
Epoch: 19/20 | Batch: 500/782 | 单Batch损失: 1.5669 | 累计平均损失: 1.5169
Epoch: 19/20 | Batch: 600/782 | 单Batch损失: 1.5758 | 累计平均损失: 1.4993
Epoch: 19/20 | Batch: 700/782 | 单Batch损失: 1.7516 | 累计平均损失: 1.4786
Epoch 19/20 完成 | 训练准确率: 47.17% | 测试准确率: 49.40%
Epoch: 20/20 | Batch: 100/782 | 单Batch损失: 1.7355 | 累计平均损失: 1.4672
Epoch: 20/20 | Batch: 200/782 | 单Batch损失: 1.3865 | 累计平均损失: 1.4876
Epoch: 20/20 | Batch: 300/782 | 单Batch损失: 1.5964 | 累计平均损失: 1.4976
Epoch: 20/20 | Batch: 400/782 | 单Batch损失: 1.5086 | 累计平均损失: 1.4662
Epoch: 20/20 | Batch: 500/782 | 单Batch损失: 1.5181 | 累计平均损失: 1.5109
Epoch: 20/20 | Batch: 600/782 | 单Batch损失: 1.4490 | 累计平均损失: 1.4513
Epoch: 20/20 | Batch: 700/782 | 单Batch损失: 1.5275 | 累计平均损失: 1.5081
Epoch 20/20 完成 | 训练准确率: 47.44% | 测试准确率: 49.56%
训练完成!
PS C:\Users\I.Love.I\Desktop\Python_code>
PS C:\Users\I.Love.I\Desktop\Python_code>
Epoch: 20/20 | Batch: 100/782 | 单Batch损失: 1.7355 | 累计平均损失: 1.4672
Epoch: 20/20 | Batch: 200/782 | 单Batch损失: 1.3865 | 累计平均损失: 1.4876
Epoch: 20/20 | Batch: 300/782 | 单Batch损失: 1.5964 | 累计平均损失: 1.4976
Epoch: 20/20 | Batch: 400/782 | 单Batch损失: 1.5086 | 累计平均损失: 1.4662
Epoch: 20/20 | Batch: 500/782 | 单Batch损失: 1.5181 | 累计平均损失: 1.5109
Epoch: 20/20 | Batch: 600/782 | 单Batch损失: 1.4490 | 累计平均损失: 1.4513
Epoch: 20/20 | Batch: 700/782 | 单Batch损失: 1.5275 | 累计平均损失: 1.5081
Epoch 20/20 完成 | 训练准确率: 47.44% | 测试准确率: 49.56%
训练完成!
PS C:\Users\I.Love.I\Desktop\Python_code>
PS C:\Users\I.Love.I\Desktop\Python_code>
Epoch: 20/20 | Batch: 100/782 | 单Batch损失: 1.7355 | 累计平均损失: 1.4672
Epoch: 20/20 | Batch: 200/782 | 单Batch损失: 1.3865 | 累计平均损失: 1.4876
Epoch: 20/20 | Batch: 300/782 | 单Batch损失: 1.5964 | 累计平均损失: 1.4976
Epoch: 20/20 | Batch: 400/782 | 单Batch损失: 1.5086 | 累计平均损失: 1.4662
Epoch: 20/20 | Batch: 500/782 | 单Batch损失: 1.5181 | 累计平均损失: 1.5109
Epoch: 20/20 | Batch: 600/782 | 单Batch损失: 1.4490 | 累计平均损失: 1.4513
Epoch: 20/20 | Batch: 700/782 | 单Batch损失: 1.5275 | 累计平均损失: 1.5081
Epoch 20/20 完成 | 训练准确率: 47.44% | 测试准确率: 49.56%
训练完成!
Epoch: 20/20 | Batch: 100/782 | 单Batch损失: 1.7355 | 累计平均损失: 1.4672
Epoch: 20/20 | Batch: 200/782 | 单Batch损失: 1.3865 | 累计平均损失: 1.4876
Epoch: 20/20 | Batch: 300/782 | 单Batch损失: 1.5964 | 累计平均损失: 1.4976
Epoch: 20/20 | Batch: 400/782 | 单Batch损失: 1.5086 | 累计平均损失: 1.4662
Epoch: 20/20 | Batch: 500/782 | 单Batch损失: 1.5181 | 累计平均损失: 1.5109
Epoch: 20/20 | Batch: 600/782 | 单Batch损失: 1.4490 | 累计平均损失: 1.4513
Epoch: 20/20 | Batch: 700/782 | 单Batch损失: 1.5275 | 累计平均损失: 1.5081
Epoch 20/20 完成 | 训练准确率: 47.44% | 测试准确率: 49.56%
Epoch: 20/20 | Batch: 100/782 | 单Batch损失: 1.7355 | 累计平均损失: 1.4672
Epoch: 20/20 | Batch: 200/782 | 单Batch损失: 1.3865 | 累计平均损失: 1.4876
Epoch: 20/20 | Batch: 300/782 | 单Batch损失: 1.5964 | 累计平均损失: 1.4976
Epoch: 20/20 | Batch: 400/782 | 单Batch损失: 1.5086 | 累计平均损失: 1.4662
Epoch: 20/20 | Batch: 500/782 | 单Batch损失: 1.5181 | 累计平均损失: 1.5109
Epoch: 20/20 | Batch: 600/782 | 单Batch损失: 1.4490 | 累计平均损失: 1.4513
Epoch: 20/20 | Batch: 100/782 | 单Batch损失: 1.7355 | 累计平均损失: 1.4672
Epoch: 20/20 | Batch: 200/782 | 单Batch损失: 1.3865 | 累计平均损失: 1.4876
Epoch: 20/20 | Batch: 300/782 | 单Batch损失: 1.5964 | 累计平均损失: 1.4976
Epoch: 20/20 | Batch: 400/782 | 单Batch损失: 1.5086 | 累计平均损失: 1.4662
Epoch: 20/20 | Batch: 100/782 | 单Batch损失: 1.7355 | 累计平均损失: 1.4672
Epoch: 20/20 | Batch: 200/782 | 单Batch损失: 1.3865 | 累计平均损失: 1.4876
Epoch: 20/20 | Batch: 300/782 | 单Batch损失: 1.5964 | 累计平均损失: 1.4976
Epoch: 20/20 | Batch: 400/782 | 单Batch损失: 1.5086 | 累计平均损失: 1.4662
Epoch: 20/20 | Batch: 500/782 | 单Batch损失: 1.5181 | 累计平均损失: 1.5109
Epoch: 20/20 | Batch: 600/782 | 单Batch损失: 1.4490 | 累计平均损失: 1.4513
Epoch: 20/20 | Batch: 100/782 | 单Batch损失: 1.7355 | 累计平均损失: 1.4672
Epoch: 20/20 | Batch: 200/782 | 单Batch损失: 1.3865 | 累计平均损失: 1.4876
Epoch: 20/20 | Batch: 300/782 | 单Batch损失: 1.5964 | 累计平均损失: 1.4976
Epoch: 20/20 | Batch: 400/782 | 单Batch损失: 1.5086 | 累计平均损失: 1.4662
Epoch: 20/20 | Batch: 500/782 | 单Batch损失: 1.5181 | 累计平均损失: 1.5109
Epoch: 20/20 | Batch: 600/782 | 单Batch损失: 1.4490 | 累计平均损失: 1.4513
Epoch: 20/20 | Batch: 700/782 | 单Batch损失: 1.5275 | 累计平均损失: 1.5081
Epoch: 20/20 | Batch: 100/782 | 单Batch损失: 1.7355 | 累计平均损失: 1.4672
Epoch: 20/20 | Batch: 200/782 | 单Batch损失: 1.3865 | 累计平均损失: 1.4876
Epoch: 20/20 | Batch: 300/782 | 单Batch损失: 1.5964 | 累计平均损失: 1.4976
Epoch: 20/20 | Batch: 400/782 | 单Batch损失: 1.5086 | 累计平均损失: 1.4662
Epoch: 20/20 | Batch: 500/782 | 单Batch损失: 1.5181 | 累计平均损失: 1.5109
Epoch: 20/20 | Batch: 600/782 | 单Batch损失: 1.4490 | 累计平均损失: 1.4513
Epoch: 20/20 | Batch: 700/782 | 单Batch损失: 1.5275 | 累计平均损失: 1.5081
Epoch 20/20 完成 | 训练准确率: 47.44% | 测试准确率: 49.56%
Epoch: 20/20 | Batch: 200/782 | 单Batch损失: 1.3865 | 累计平均损失: 1.4876
Epoch: 20/20 | Batch: 300/782 | 单Batch损失: 1.5964 | 累计平均损失: 1.4976
Epoch: 20/20 | Batch: 400/782 | 单Batch损失: 1.5086 | 累计平均损失: 1.4662
Epoch: 20/20 | Batch: 500/782 | 单Batch损失: 1.5181 | 累计平均损失: 1.5109
Epoch: 20/20 | Batch: 600/782 | 单Batch损失: 1.4490 | 累计平均损失: 1.4513
Epoch: 20/20 | Batch: 400/782 | 单Batch损失: 1.5086 | 累计平均损失: 1.4662
Epoch: 20/20 | Batch: 500/782 | 单Batch损失: 1.5181 | 累计平均损失: 1.5109
Epoch: 20/20 | Batch: 600/782 | 单Batch损失: 1.4490 | 累计平均损失: 1.4513
Epoch: 20/20 | Batch: 700/782 | 单Batch损失: 1.5275 | 累计平均损失: 1.5081
Epoch: 20/20 | Batch: 500/782 | 单Batch损失: 1.5181 | 累计平均损失: 1.5109
Epoch: 20/20 | Batch: 600/782 | 单Batch损失: 1.4490 | 累计平均损失: 1.4513
Epoch: 20/20 | Batch: 700/782 | 单Batch损失: 1.5275 | 累计平均损失: 1.5081
Epoch: 20/20 | Batch: 700/782 | 单Batch损失: 1.5275 | 累计平均损失: 1.5081
Epoch 20/20 完成 | 训练准确率: 47.44% | 测试准确率: 49.56%
训练完成!

@浙大疏锦行