深度学习里面,请问有写train函数的模板吗?

别再手动复制路径了!用Shell脚本5分钟搞定深度学习数据集train.txt/val.txt清单 本文介绍如何使用Shell脚本自动化生成深度学习数据集的train.txt和val.txt清单文件,大幅提升数据准备效率。通过详细的find命令解析和完整脚本实现,帮助开发者快速处理包含数千张图片的分类数据集,支持随机划分验证集、保持类别平衡等高级功能,适用于TensorFlow、PyTorch等主流框架。 阅读详情

知乎热门问题:深度学习里面,请问有写train函数的模板吗?

以下是 知乎用户 吃货本货 的回答。cd54a48f26128315682ffd4e8ce55fa8.png

老师,这题我会。

一般pytorch需要用户自定义训练循环,可以说有1000个pytorch用户就有1000种训练代码风格。
从实用角度讲,一个优秀的训练循环应当具备以下特点。

  • 代码简洁易懂 【模块化、易修改、short-enough】

  • 支持常用功能 【进度条、评估指标、early-stopping】

经过反复斟酌测试,我精心设计了仿照keras风格的pytorch训练循环。诸君且看。

import os,sys,time
import numpy as np
import pandas as pd
import datetime 
from tqdm import tqdm 

import torch
from torch import nn 
from copy import deepcopy

def printlog(info):
    nowtime = datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S')
    print("\n"+"=========="*8 + "%s"%nowtime)
    print(str(info)+"\n")

class StepRunner:
    def __init__(self, net, loss_fn,
                 stage = "train", metrics_dict = None, 
                 optimizer = None
                 ):
        self.net,self.loss_fn,self.metrics_dict,self.stage = net,loss_fn,metrics_dict,stage
        self.optimizer = optimizer

    def step(self, features, labels):
        #loss
        preds = self.net(features)
        loss = self.loss_fn(preds,labels)

        #backward()
        if self.optimizer is not None and self.stage=="train": 
            loss.backward()
            self.optimizer.step()
            self.optimizer.zero_grad()

        #metrics
        step_metrics = {self.stage+"_"+name:metric_fn(preds, labels).item() 
                        for name,metric_fn in self.metrics_dict.items()}
        return loss.item(),step_metrics

    def train_step(self,features,labels):
        self.net.train() #训练模式, dropout层发生作用
        return self.step(features,labels)

    @torch.no_grad()
    def eval_step(self,features,labels):
        self.net.eval() #预测模式, dropout层不发生作用
        return self.step(features,labels)

    def __call__(self,features,labels):
        if self.stage=="train":
            return self.train_step(features,labels) 
        else:
            return self.eval_step(features,labels)

class EpochRunner:
    def __init__(self,steprunner):
        self.steprunner = steprunner
        self.stage = steprunner.stage

    def __call__(self,dataloader):
        total_loss,step = 0,0
        loop = tqdm(enumerate(dataloader), total =len(dataloader))
        for i, batch in loop: 
            loss, step_metrics = self.steprunner(*batch)
            step_log = dict({self.stage+"_loss":loss},**step_metrics)
            total_loss += loss
            step+=1
            if i!=len(dataloader)-1:
                loop.set_postfix(**step_log)
            else:
                epoch_loss = total_loss/step
                epoch_metrics = {self.stage+"_"+name:metric_fn.compute().item() 
                                 for name,metric_fn in self.steprunner.metrics_dict.items()}
                epoch_log = dict({self.stage+"_loss":epoch_loss},**epoch_metrics)
                loop.set_postfix(**epoch_log)

                for name,metric_fn in self.steprunner.metrics_dict.items():
                    metric_fn.reset()
        return epoch_log


def train_model(net, optimizer, loss_fn, metrics_dict, 
                train_data, val_data=None, 
                epochs=10, ckpt_path='checkpoint.pt',
                patience=5, monitor="val_loss", mode="min"):

    history = {}

    for epoch in range(1, epochs+1):
        printlog("Epoch {0} / {1}".format(epoch, epochs))

        # 1,train -------------------------------------------------  
        train_step_runner = StepRunner(net = net,stage="train",
                loss_fn = loss_fn,metrics_dict=deepcopy(metrics_dict),
                optimizer = optimizer)
        train_epoch_runner = EpochRunner(train_step_runner)
        train_metrics = train_epoch_runner(train_data)

        for name, metric in train_metrics.items():
            history[name] = history.get(name, []) + [metric]

        # 2,validate -------------------------------------------------
        if val_data:
            val_step_runner = StepRunner(net = net,stage="val",
                loss_fn = loss_fn,metrics_dict=deepcopy(metrics_dict))
            val_epoch_runner = EpochRunner(val_step_runner)
            with torch.no_grad():
                val_metrics = val_epoch_runner(val_data)
            val_metrics["epoch"] = epoch
            for name, metric in val_metrics.items():
                history[name] = history.get(name, []) + [metric]

        # 3,early-stopping -------------------------------------------------
        arr_scores = history[monitor]
        best_score_idx = np.argmax(arr_scores) if mode=="max" else np.argmin(arr_scores)
        if best_score_idx==len(arr_scores)-1:
            torch.save(net.state_dict(),ckpt_path)
            print("<<<<<< reach best {0} : {1} >>>>>>".format(monitor,
                 arr_scores[best_score_idx]),file=sys.stderr)
        if len(arr_scores)-best_score_idx>patience:
            print("<<<<<< {} without improvement in {} epoch, early stopping >>>>>>".format(
                monitor,patience),file=sys.stderr)
            break 
        net.load_state_dict(torch.load(ckpt_path))

    return pd.DataFrame(history)

使用方法如下:

from torchmetrics import Accuracy

loss_fn = nn.BCEWithLogitsLoss()
optimizer= torch.optim.Adam(net.parameters(),lr = 0.01)   
metrics_dict = {"acc":Accuracy()}

dfhistory = train_model(net,
    optimizer,
    loss_fn,
    metrics_dict,
    train_data = dl_train,
    val_data= dl_val,
    epochs=10,
    patience=5,
    monitor="val_acc", 
    mode="max")

疗效如下:

================================================================================2022-07-10 20:06:16
Epoch 1 / 10

100%|██████████| 200/200 [00:17<00:00, 11.74it/s, train_acc=0.735, train_loss=0.53]
100%|██████████| 40/40 [00:01<00:00, 20.07it/s, val_acc=0.827, val_loss=0.383]
<<<<<< reach best val_acc : 0.8274999856948853 >>>>>>

================================================================================2022-07-10 20:06:35
Epoch 2 / 10

100%|██████████| 200/200 [00:16<00:00, 11.96it/s, train_acc=0.832, train_loss=0.391]
100%|██████████| 40/40 [00:02<00:00, 18.13it/s, val_acc=0.854, val_loss=0.317]
<<<<<< reach best val_acc : 0.8544999957084656 >>>>>>

================================================================================2022-07-10 20:06:54
Epoch 3 / 10

100%|██████████| 200/200 [00:17<00:00, 11.71it/s, train_acc=0.87, train_loss=0.313]
100%|██████████| 40/40 [00:02<00:00, 19.96it/s, val_acc=0.902, val_loss=0.239]
<<<<<< reach best val_acc : 0.9024999737739563 >>>>>>

================================================================================2022-07-10 20:07:13
Epoch 4 / 10

100%|██████████| 200/200 [00:16<00:00, 11.88it/s, train_acc=0.889, train_loss=0.265]
100%|██████████| 40/40 [00:02<00:00, 18.46it/s, val_acc=0.91, val_loss=0.216]
<<<<<< reach best val_acc : 0.9100000262260437 >>>>>>

================================================================================2022-07-10 20:07:32
Epoch 5 / 10

100%|██████████| 200/200 [00:17<00:00, 11.71it/s, train_acc=0.902, train_loss=0.239]
100%|██████████| 40/40 [00:02<00:00, 19.68it/s, val_acc=0.891, val_loss=0.279]

================================================================================2022-07-10 20:07:51
Epoch 6 / 10

100%|██████████| 200/200 [00:17<00:00, 11.75it/s, train_acc=0.915, train_loss=0.212]
100%|██████████| 40/40 [00:02<00:00, 19.52it/s, val_acc=0.908, val_loss=0.222]

================================================================================2022-07-10 20:08:10
Epoch 7 / 10

100%|██████████| 200/200 [00:16<00:00, 11.79it/s, train_acc=0.921, train_loss=0.196]
100%|██████████| 40/40 [00:02<00:00, 19.26it/s, val_acc=0.929, val_loss=0.187]
<<<<<< reach best val_acc : 0.9294999837875366 >>>>>>

================================================================================2022-07-10 20:08:29
Epoch 8 / 10

100%|██████████| 200/200 [00:17<00:00, 11.59it/s, train_acc=0.931, train_loss=0.175]
100%|██████████| 40/40 [00:02<00:00, 19.91it/s, val_acc=0.938, val_loss=0.187]
<<<<<< reach best val_acc : 0.9375 >>>>>>

================================================================================2022-07-10 20:08:49
Epoch 9 / 10

100%|██████████| 200/200 [00:17<00:00, 11.68it/s, train_acc=0.929, train_loss=0.178]
100%|██████████| 40/40 [00:02<00:00, 19.90it/s, val_acc=0.937, val_loss=0.181]

================================================================================2022-07-10 20:09:08
Epoch 10 / 10

100%|██████████| 200/200 [00:16<00:00, 11.84it/s, train_acc=0.937, train_loss=0.16] 
100%|██████████| 40/40 [00:02<00:00, 19.91it/s, val_acc=0.937, val_loss=0.167]

该训练循环满足我所说的以上全部这些特性。

  • 1,模块化:自下而上分成 StepRunner, EpochRunner, 和train_model 三级,结构清晰明了。

  • 2,易修改:如果输入和label形式有差异(例如,输入可能组装成字典,或者有多个输入),仅需更改StepRunner就可以了,后面无需改动,非常灵活。

  • 3,short-enough: 全部训练代码不到150行。

  • 4,支持进度条:通过tqdm引入。

  • 5,支持评估指标:引入torchmetrics库中的指标。

  • 6,支持early-stopping:在train_model函数中指定 monitor、mode、patience即可。

以上训练循环也是我在eat_pytorch_in_20_days中使用的主要训练循环。该库目前已经获得3.3k+星星⭐️,大部分读者反馈还是挺好用的。

点击文末阅读原文,查看知乎原始回答,感觉不错的小伙伴可以给吃货本货一个赞同表示鼓励哦,谢谢大家。😊 逃~ 

5c556a41d5c540b4c2a54f47761e573f.png

HALCON深度学习目标检测:工业视觉落地实战与避坑指南 目标检测是计算机视觉的核心任务,通过卷积神经网络自动定位和识别图像中的目标。其原理是利用锚框和特征金字塔,在多个尺度上预测目标的类别与位置。在工业场景中,目标检测能大幅提升缺陷检测的鲁棒性和泛化能力,减少对人工规则的依赖。典型应用包括产线缺陷识别、工件定位和字符检测等。HALCON作为成熟的机器视觉软件,提供了从数据标注、模型训练到推理部署的完整深度学习工具链,支持实例分割和基于锚框的检测模型,并能与产线相机、标定和通信无缝对接。本文围绕HALCON深度学习目标检测,详解模型选型、DLDataset构建、训 阅读详情

相关推荐

教学级自动驾驶深度学习工程实践模板解析

自动驾驶深度学习并非直接部署的黑盒系统,而是以视觉导航为核心的端到端工程训练范式。其本质是将CNN、时序建模与物理约束融入可调试代码,实现从图像输入到转向角输出的完整数据闭环。关键技术包括多帧时间对齐的数据加载、梯度累积与OneCycleLR驱动的稳定训练、以及基于状态机的视频闭环验证。该模板聚焦教学落地,强调`data_loader.py`的时空一致性处理和`video_drive.py`的实时反馈校验,适用于高校教学、转行工程师快速上手及baseline构建,是连接理论公式与车载传感器数据流的关键沙盒。

weixin_29048309的博客 319

速成pytorch学习——8天损失函数

一般来说,监督学习的目标函数由损失函数和正则化项组成。(Objective = Loss + Regularization) Pytorch中的损失函数一般在训练模型时候指定。 注意Pytorch中内置的损失函数的参数和tensorflow不同,是y_pred在前,y_true在后,而Tensorflow是y_true在前,y_pred在后。 对于回归模型,通常使用的内置损失函数是均方损失函数nn.MSELoss 。 对于二分类模型,通常使用的是二元交叉熵损失函数nn.BCELoss (输入已经是s

kaggle expert,全球排名前1000,清华计算机研究生,兴趣算法工程 1077

pytorch_train.py

本代码为python在pytorch上代码,需要建立文件夹,其子文件夹命名为train和val,分别在子文件夹中放入训练和测试数据,改变代码中数据集地址即可实现分类

梦中情炉-torchkeras

</a><a href="https://www.kaggle.com/lyhue1991/kerasmodel-wandb-example"><img src="https://kaggle.com/static/images/open-in-kaggle.svg" alt="Open In Kaggle"></a>

517

CVAT实战:从零搭建高效数据标注流水线

本文详细介绍了如何使用CVAT搭建高效的数据标注流水线,从环境部署到团队协作,再到数据流转和质量把控,全面覆盖了数据标注的各个环节。CVAT作为一款开源的数据标注工具,支持多人协作和丰富的标注类型,特别适合遥感图像等复杂场景的标注需求。通过实战案例和技巧分享,帮助读者快速掌握CVAT的核心功能,提升标注效率。

weixin_30555125的博客 399

【深度学习】tensorboard中的图片放到论文中

1. 利用tensorboard中的导出数据功能 选中左上角的标签,然后选择csv格式的数据下载即可。 左边的smoothing 数值不影响导出数据的大小。 2.tensorboard 图下标签介绍: 放大 Toggle y-axis log scale:将y轴对数化 Fit domain to data:如果拖动了图片等,再重新回到原始位置 Download Current Chart as SVG 3.用下载下来的csv数据来画图 第一幅图片:训练的平均长度 fig, ax1 = plt.sub

gaocui883的博客 1万+

[ 深度学习初识 - 实操笔记 ] 全连接神经网络-手写数字识别项目

1. 神经网络 (1)感知机 一个神经元。 感知机接收多个输入信号,输出一个信号,与广义线性回归类似 ,即有Y = WX+B 。 广义线性回归中有核函数,在感知机中称为激活函数(提供非线性能力),在感知机中,激活函数常用 sigmoid函数。 广义线性回归和感知机算法的训练都是由梯度下降法,加上正则化降低损失的。 (2)多层神经网络 MLP 多个感知机,分布在多层神经网络上,即神经网络按一层一层构...

iamfishman 1040

Python自然语言处理 NLTK 库用法入门教程【经典】

@本文来源于公众号:csdn2299,喜欢可以关注公众号 程序员学府 本文实例讲述了Python自然语言处理 NLTK 库用法。分享给大家供大家参考,具体如下: 在这篇文章中,我们将基于 Python 讨论自然语言处理(NLP)。本教程将会使用 Python NLTK 库。NLTK 是一个当下流行的,用于自然语言处理的 Python 库。 那么 NLP 到底是什么?学习 NLP 能带来什么好处? ...

python函数基础教程 1万+

深度学习里面有没有支持Multi-GPU-DDP模式的pytorch模型训练代码模版?

一般pytorch需要用户自定义训练循环,可以说有1000个pytorch用户就有1000种训练代码风格。从实用角度讲,一个优秀的训练循环应当具备以下特点。代码简洁易懂 【模块化、易修改、short-enough】支持常用功能 【进度条、评估指标、early-stopping】经过反复斟酌测试,我精心设计了仿照keras风格的pytorch训练循环,完全满足以上条件。该方案在知乎受到许多读者喜爱,...

Python_Ai_Road的博客 568

特斯拉Model 3 BMS主控板拆解:从硬件设计到热管理策略的实战解析

本文深度拆解特斯拉Model 3的BMS主控板,解析其硬件架构与热管理协同策略。文章聚焦于主控板的分区布局、双核MCU的智慧分工,以及从被动监控到主动干预的热管理范式转变,揭示了特斯拉在高压安全、实时控制与系统级工程思维上的设计哲学。

zz67890的博客 595

真双口RAM---Quartus与Vivado开发环境区别对比

2、写和写冲突:表示两个端口写使能同时有效且写地址相同,此时需要关断一个写,把两个写端口都需要更新的值处理到一个写端口上面,任何的DP RAM 都不支持写和写冲突。以上述直方图统计使用为例,博主在仿真过程中发现,vivado真双口RAM--B端口读写延迟2个clk;1、读和写冲突:如果读和写同时有效,且读和写是同一个地址时,发生RAM读写冲突,此时会把最新的写数据直接赋给读数据,称为写穿通到读。

weixin_54470733的博客 3583

【Pytorch深度学习50篇】·······第四篇:【Segmentation】【2】----- Deeplab V3+的数据准备和训练

上一篇文章已经把模型文件DeeplabV3+的代码放出来了,模型有了,我们就应该来准备数据了,本次的数据集还是之前人脸识别的那个数据集,我从里面随件挑选了40+的图片来标注训练。一共标注了两个类别,分别是【眼睛,嘴巴】,不得不说的是,标注真是一个累人的活,怪不得叫人工智能,智能的前提就是大量的人工,不过还好,我只标注了40张,而且还可爱美丽的美女数据,想到之前有人跟我说,他们之前的标注是····,我就吐了。 3.数据准备 好了,先来展示一下数据集吧(虽然只有40+,‘集’这个字有点勉强)。 这是原图

guligedong的博客 795

【第41篇】ConvMAE:Masked Convolution 遇到 Masked Autoencoders

摘要 论文地址:https://arxiv.org/pdf/2205.03892 视觉转换器 (ViT) 已成为各种视觉任务广泛采用的架构。用于特征预训练的掩码自动编码 [2、1、28、55] 和多尺度混合卷积变换器架构 [12、21、49、34、57] 可以进一步释放 ViT 的潜力,从而实现最先进的图像分类、检测和语义分割的艺术表演。在本文中,我们的 ConvMAE 框架证明了多尺度混合卷积变换器可以通过掩码自动编码方案学习更多的判别表示。然而,直接使用原始掩码策略会导致计算成本和预训练-微调差异。为了

AI浩 2815

深度学习里面,train函数的模板

深度学习里面,请问有写train函数的模板吗?- 王大队长的回答 - 知乎最近在kaggle上看到别人的训练函数代码写得很优秀,于是结合自己的训练函数喜好优化了一下训练函数(参数初始化、动态修改学习率、优化器选择),感觉比之前高级多了!还是要多学习大佬的代码!

czc_hehedahaha的博客 367

网络变更:APIC 节点替换

Fabric Name,Controller ID,TEP Address Pool 等信息必须相同;如果故障设备是 APIC1 还需要重新配置管理密码。此过程可能需要 10 分钟左右,在此期间目标 APIC 可能在 Available/Unavailable 状态翻滚。APIC 获取 TEP 地址后,进入 fully-fit。通过 CLI 以及配置的密码登录目标 APIC。

m0_54931486的博客 322

OAI-5G开源通信平台实践(一)-安装 部署及RFsimulator基本测试

OAI (Open Air Interface) 是目前开源5G/4G项目中最完善、最成熟的一个,并且仍然在持续更新。其包含基站、终端及核心网网元的代码,可基于x86\arm+射频卡搭建实际硬件平台,也可在x86平台上对rf\phy等层进行模拟,做各网元协议栈的单独测试验证。本文总结了x86平台下,oai的安装及运行方式。包括NTN分支和主分支的rf simulator、nos1、端到端部署等场景的验证流程,同时总结了验证过程中遇到的问题及解决方法。

十年通信老兵的技术修炼之路——从3G到5G,从地面基站到卫星通信。 2968

Cresset深度学习模板:10分钟构建可重现PyTorch开发环境

Cresset是一个强大的PyTorch项目模板仓库,能够帮助开发者从源代码构建PyTorch项目,支持任何版本的PyTorch、CUDA和cuDNN。无论是深度学习新手还是经验丰富的开发者,都能通过这个模板快速搭建起稳定、可重现的开发环境,告别环境配置的烦恼。 [![Cresset项目logo](https://raw.gitcode.com/gh_mirrors/cr/cresset/raw

gitblog_01109的博客 911

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

深度学习项目训练环境入门必看:激活dl环境、cd工作目录、修改train.py关键步骤

本文介绍了如何在星图GPU平台上自动化部署深度学习项目训练环境镜像,快速构建开箱即用的PyTorch训练工作台。该镜像预装CUDA 11.6、PyTorch 1.13和完整依赖,适用于图像分类、目标检测等典型深度学习模型训练任务,显著降低环境配置门槛。

weixin_35749786的博客 334

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

YOLOv9训练命令模板:train_dual.py 完整参数示例

本文介绍了基于星图GPU平台自动化部署YOLOv9官方版训练与推理镜像的完整方案。该镜像预集成PyTorch、CUDA等环境,支持开箱即用的目标检测任务,适用于模型微调、AI应用开发等场景,助力开发者高效完成从训练到推理的全流程部署。

weixin_34268462的博客 544

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

非常不错的train方法模板

记录一下,非常不错的train模板。通过这个模板可以学到很多。

AI浩 1485

深度学习train函数模版

【代码】深度学习train函数模版。

m0_54358863的博客 262

3大核心优势+5分钟部署:PyTorch项目模板让你的深度学习开发效率提升300%

你是否曾为深度学习项目的混乱结构而烦恼?当你面对图像分类、GAN生成、强化学习等多种任务时,是否希望有一个统一的框架来管理所有项目?PyTorch项目模板正是为解决这些问题而生的智能解决方案,它通过模块化设计和配置驱动开发,让你能够专注于算法创新而非项目配置。 ## 问题根源:为什么深度学习项目总是难以维护? 传统的深度学习开发存在三个核心痛点: **代码重复与混乱**:每个项目都要重新搭建

gitblog_02332的博客 774

【MindSpore进阶】抛弃Model.train,手把手教你写自定义训练流

本文介绍了如何在MindSpore2.x中实现自定义训练循环,特别适用于需要灵活控制训练流程的复杂场景(如GAN网络、强化学习等)。核心方法是采用函数式编程范式,通过ops.value_and_grad自动生成梯度计算函数,配合@ms.jit装饰器实现高效执行。文章提供了完整代码模板,包括网络定义、前向函数构建、梯度计算和训练循环实现,相比Model.train接口具有更高透明度和灵活性,同时保持高性能。这种模式尤其适合需要拦截或修改梯度、交替训练不同网络的应用场景。

Kenji_Shinji的博客 197

PyTorch项目模板终极指南:构建可扩展深度学习项目的最佳实践

PyTorch Project Template是一个专为深度学习项目设计的**可扩展模板**,它通过模块化架构和配置驱动的设计理念,为开发者提供了快速启动图像分割、目标分类、GAN和强化学习等各类AI项目的完整解决方案。无论你是深度学习初学者还是经验丰富的研究者,这个模板都能显著提升你的开发效率和代码质量。 ## 为什么需要PyTorch项目模板? 传统的深度学习项目开发常常面临代码混乱、结

gitblog_00099的博客 398

PaddleSpeech VITS 训练全解析:从 train.py 入口到配置、数据与损失函数

VITS(Variational Inference with adversarial Training for End-to-End Text-to-Speech)是一种将变分自编码器(VAE)与对抗训练结合的端到端文本到语音模型,可直接从文本生成原始波形,无需单独的声学模型与声码器串联。本文以 PaddleSpeech 仓库中 `paddlespeech.t2s.exps.vits.train

gitblog_01102的博客 163

DL笔记5/27

在计算神经网络的层数时,只计算具有计算能力的层,而输入层只是将数据进行输入,无计算过程,所以层数:隐藏层层数+1个输出层。 Linear output units with Mean Squared Error Loss is usually used for regression tasks. https://blog.youkuaiyun.com/edward_zcl/article/details/85224833 全面理解softmax与交叉熵 理解泛化的一个重要概念是泛化鸿沟(generalization g

weixin_42877670的博客 369
上一篇: 30行代码用streamlit构建你的机器学习模型应用
下一篇: pytorch_lightning模型训练加速技巧与涨点技巧
算法美食屋
博客等级 码龄9年 2万+粉丝 154原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值