快速入门pytorch,建立自己的深度学习模型

非计算机专业如何高效入门深度学习?3个月跑通第一个模型 从概念到实践,深度学习本质上是可学习的函数,通过数据驱动自动提取特征,无需人工设计规则。对于非计算机专业学习者,真正的门槛不在数学或学历,而在于目标明确和持续反馈。本文从最小数学知识清单、Python基础、环境配置到完整PyTorch项目,构建一条可复制的学习路径。通过MNIST手写数字识别实战,理解数据、模型、损失与优化器的协作关系。深度学习不仅用于算法工程师,也可在医学图像、金融风控、农业识别等领域落地应用,掌握这一技能将显著提升解决专业问题的效率。 阅读详情

Pytorch(list,tuple,nArray以及Tensor)

预备知识:讲述了列表(list),元组(tuple),数组(Array-numpy).

list和tuple的最大区别就是是否可以修改,对于list而言是可变的数据类型可以进行增删改查,而tuple就是不可变的数据类型,tuple一旦被创建就不能增删改。

然后数组与list、tuple的最大区别就是:前者要求数组内的所有的数据类型一致,而后者内的元素数据类型可以不一致.

在List中存放的是元素的指针,因此一个元素需要存放指针+数据,增加了存储和消耗CPU.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6pebjuQl-1666968898084)(C:\Users\panhengyu\AppData\Roaming\Typora\typora-user-images\image-20221022132100569.png)]

  1. 在numpy中的每个维度长度都记录在shape属性中(元组表示),数组中的维是数组深度(嵌套数组)的一个级别,嵌套数组是将数组作为元素的数组,即数组中有数组. 比如:(2,3)表示第一个维度的长度为2,第二个维度的长度为3.比如: 通过np.admin()获得维度数

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aM85vbaU-1666968898089)(C:\Users\panhengyu\AppData\Roaming\Typora\typora-user-images\image-20221022161411134.png)]

  1. numpy数组中的轴(axis):

    numpy数组的某个轴,指的是:该数组的某个维度的方向,其方向从索引号由低到高。许多numpy方法或函数在调用时,常常需要指定一个关键参数“axis=X”,它表示的是沿哪个轴的方向进行运算(例如,求均值,方差等),这里的X表示的是轴的索引号(axis=0表示轴0,axis=1表示轴1,…,依此类推)。

​ numpy的维度与轴数一致.以维度(3,4,5)的三维数组为例,它有3个维度,因此,它的轴有3个,即”轴0“,”轴1“,”轴2“长度分别为3,4,5。

比如:
a.mean(axis=1):表示沿轴1方向求每个元素的均值.
a.mean(axis=0):表示沿着轴0方向求每个元素的均值.
a.mean的结果维度肯定是剩余轴构成的维度.

比如:图像批处理
一幅RGB图像的1个通道的数据可表示为一个(H,W)的数组,现在有3个通道,因此,一幅RGB图像可以用维度为(3,H,W)的数组来表示,而N幅图像则可以用维度为(N,3,H,W)的数组来表示。

参考:https://blog.youkuaiyun.com/caijungan/article/details/119861315

Tensors

Tensors 和Numpy的n维数组是类似的.除了如此,Tensors也可以运行在GPU上或者其他硬件加速器上. 并且NumPy和Tensors之间互换的时候经常是分享内存的,因此无需有额外的拷贝开销. Tensors也是可以自动微分优化的.

Tuple/List=>np.array()=>nArray=>torch.tensor(List)/torch.from_numpy(nArray)=>Tensor:

张量操作有成千上万,这些操作都可以在GPU上运行,默认情况下,张量是在CPU上创建的.我们需要使用.to方法,蒋张量显式移动到GPU。

1.把张量移动到GPU上加速

if torch.cuda.is_available():
    tensor=tensor.to("cuda")

2. 张量拼接

torch.cat([tensor,tensor,tensor],dim=1):对三个张量在1维度进行拼接.

3. 矩阵乘法和矩阵元素相乘:

# This computes the matrix multiplication between two tensors. y1, y2, y3 will have the same value
y1 = tensor @ tensor.T
y2 = tensor.matmul(tensor.T)

y3 = torch.rand_like(y1)
torch.matmul(tensor, tensor.T, out=y3)

# This computes the element-wise product. z1, z2, z3 will have the same value
z1 = tensor*tensor
z2 = tensor.mul(tensor.T)
z3 = torch.rand_like(z1)
tensor.mul(tensor,tensor.T,out=z3)

4. In-place operations 将结果存储到操作数中的操作称为就地操作,以_为后缀,

tensor.add_(5):在原来操作数的张量上进行修改,对每个元素加上5,然后存放在tensor张量上.

in-place操作可以节省一些内存空间,但是在计算倒数的时候,由于失去一些历史记录,会出错,因此in-place操作是不推荐的.

Build Model

the torch.nn包命名空间提供了你构建自己神经网络所需要的所有块(building blocks).比如torch.nn.modules包中含有一些模块,torch.nn.functional包含有各种损失函数等.

  1. Get Device for Training:

    device = "gpu" if torch.cuda.is_available() else "cpu"
    print(device)
    
  2. Define the class

    我们定义的类是torch.nn.Module类的子类,里面必须包含有**_ _init _ _ 方法(初始化),并且每个torch.nn.Module的子类都要在forward**方法中实现对输入数据的操作.

    class NeuralNetwork(nn.Module):
        def __init__(self):
            super(NeuralNetwork,self).__init__()
    
    
        def forward(self,x):
    

    然后:实例化NeuralNetwork,然后把他搬到GPU上运行

    model = NeuralNetwork().to(device)
    print(model)
    

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OqBIV70u-1666968898091)(Pytorch.assets/image-20221028211450124-16669628915731.png)]

  3. Model Parameters

    神经网络中的所有层都是参数化的,有在训练过程中被优化的相关权重和偏置.使用你模型的parameters()方法和named_parameters()方法 可以访问这些参数.

    print(f"Model structure: {model}\n\n")
    
    for name, param in model.named_parameters():
        print(f"Layer: {name} | Size: {param.size()} | Values : {param[:2]} \n")
    

完整的代码如下:

from tkinter import N
from turtle import forward
import torch
import torch.nn as nn
import torch.nn.modules as m
import torch.nn.functional as f


class NeuralNetwork(nn.Module):
    def __init__(self):
        super(NeuralNetwork,self).__init__()
        self.flatten=nn.Flatten()
        # nn.Sequential 是有序的模块容器.数据按照定义的顺序通过所有模块
        self.linear_relu_stack=nn.Sequential(
            nn.Linear(28*28,512),
            nn.ReLU(),
            nn.Linear(512,512),
            nn.ReLU(),
            nn.Linear(512,10)
        )

    def forward(self,x):
        x=self.flatten(x)
        logits=self.linear_relu_stack(x)
        return logits

device = "cuda" if torch.cuda.is_available() else "cpu"
print(device)
model=NeuralNetwork().to(device)
print(model)
X=torch.rand(1,28,28,device=device)
logits=model(X)
# he logits are scaled to values [0, 1] representing the model’s predicted probabilities for each class.
#其中dim 参数决定了沿着这一维度的值加起来和为1
y_pred=torch.nn.Softmax(dim=1)(logits)
print(y_pred)

Autograd

建立好了模型后,需要对模型进行训练,使模型中的权重调整到最优即优化问题.

其中在训练神经网络过程中,最经常使用的优化算法就是反向传播(back propagation).

模型中的参数会根据loss function的梯度被调整.

torch.autograd: 支持任意可计算图的自动梯度计算.

在这里插入图片描述

  1. Computing Gradients:

​ 为了优化我们神经网络的权重参数,我们需要计算我们损失函数中参数的梯度,比如,我们需要固定 x 和 y x和y x和y中计算 δ l o s s δ w \frac{\delta loss}{\delta w} δwδloss​和 δ l o s s δ b \frac{\delta loss}{\delta b} δbδloss​

loss.backward()
print(w.grad)
print(b.grad)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HvEumbSn-1666968898094)(Pytorch.assets/image-20221028215323256-16669652050627.png)]

  1. Disabling Gradient Tracking

    默认,对于requires_grad=True的所有张量(tensor)都会被跟踪它们的计算记录和支持梯度计算.但很多时候我们不需要做这些.比如说,我们已经训练完整个模型了,只需要把这个模型应用在一些输入数据上时,i.e. we only want to do forward computations through the network. We can stop tracking computations by surrounding our computation code with torch.no_grad() block:

    with torch.no_grad():
    	#这个方法块内的计算记录不会被记录.
    	
    

    或者同样的在张量上使用*detach()*方法

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-feACyDWn-1666968898096)(Pytorch.assets/image-20221028222434407-16669670768179.png)]

forward和backward的过程:

Optimization
  1. Hyperparameters

    超参数是控制你模型优化速度的可变参数.

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-I6e32shm-1666968898098)(Pytorch.assets/image-20221028223037097-166696743853513.png)]

  2. Optimization Loop

    一旦我们设置好超参,那么我们就可以训练和优化我们的模型.每一个优化循环的iteration叫做epoch

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ofuoJe4q-1666968898100)(Pytorch.assets/image-20221028223213136-166696753448515-166696756380517.png)]

  3. select the loss function and Optimizer

    optimizer优化器是在torch.optim包上

    定义一个优化器:
    optimizer=torch.optim.SGD(model.parameters(),lr=learning_rate)
    

    在Training Loop中,optimization happens in three steps

    1. optimizer.zero_grad():作用是情况model.parameters()中所有参数的梯度,梯度一般都是累加的,但是为了避免重复计算,我们需要在每个回合显式清零
    2. loss.backward():损失函数调用backward(),反向梯度计算
    3. 一旦我们有了梯度后,我们就会调用 optimizer.step() 根据反向梯度来更新参数.
def train_loop(dataloader, model, loss_fn, optimizer):
    size = len(dataloader.dataset)
    for batch, (X, y) in enumerate(dataloader):
        # Compute prediction and loss
        pred = model(X)
        loss = loss_fn(pred, y)

        # Backpropagation
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()

        if batch % 100 == 0:
            loss, current = loss.item(), batch * len(X)
            print(f"loss: {loss:>7f}  [{current:>5d}/{size:>5d}]")


def test_loop(dataloader, model, loss_fn):
    size = len(dataloader.dataset)
    num_batches = len(dataloader)
    test_loss, correct = 0, 0

    with torch.no_grad():
        for X, y in dataloader:
            pred = model(X)
            test_loss += loss_fn(pred, y).item()
            correct += (pred.argmax(1) == y).type(torch.float).sum().item()

    test_loss /= num_batches
    correct /= size
    print(f"Test Error: \n Accuracy: {(100*correct):>0.1f}%, Avg loss: {test_loss:>8f} \n")
    
    
    
loss_fn = nn.CrossEntropyLoss()
optimizer = torch.optim.SGD(model.parameters(), lr=learning_rate)

epochs = 10
for t in range(epochs):
    print(f"Epoch {t+1}\n-------------------------------")
    train_loop(train_dataloader, model, loss_fn, optimizer)
    test_loop(test_dataloader, model, loss_fn)
print("Done!")    
Saving and Loading Model Weights

Save:Pytorch模型将已经学习后的参数存放在内部状态文件夹中,叫做 state_dict ,可以用 torch.save() 方法保存.

model = models.vgg16(pretrained=True)
torch.save(model.state_dict(), 'model_weights.pth')

Load: 需要创建相同模型的实例,然后加载参数model.load_state_dict(torch.load(path)),然后再用model.eval()

model = models.vgg16() # we do not specify pretrained=True, i.e. do not load default weights
model.load_state_dict(torch.load('model_weights.pth'))
model.eval()

如果我们想要保存和加载参数和模型,那么

torch.save(model,path)

model=
参考文献

https://pytorch.org/tutorials/beginner/basics/saveloadrun_tutorial.html

TensorFlow 篇 | TensorFlow 2.x 基于 Keras 的模型构建 「导语」TensorFlow 2.0 版发布以来,Keras 已经被深度集成于 TensorFlow 框架中,Keras API 也成为了构建深度网络模型的第一选择。使用 Keras 进行模型开发与迭代是每一个数据开发人员都需要掌握的一项基本技能,让我们一起走进 Keras 的世界一探究竟。 Keras 介绍 Keras 是一个用 Python 编写的高级神经网络 API ,它是一个独立的库,能够以 TensorFlow , CNTK 或者 Theano 作为后端运行。 TensorFlow 从 .. 阅读详情

相关推荐

PyTorch深度学习快速入门【小土堆】

1.关注transforms中参数输入和输出类型2.多看官方文档3.关注方法需要什么参数:参数如果设置了默认值,保留默认值即可,没有默认值的需要指定(看一下要求传入什么类型的参数)直接print该变量,print(type()),看结果里显示什么类型最后要 totensor,在 tensorboard 看一下结果(tensorboard需要tensor数据类型进行显示)8. torchvision 中的数据集使用。

weixin_56054625的博客 1886

Pytorch4——* & **的区别—tuple、list、dict

1.pytorch基础知识 1.1. def xxxxx(*args, **kwargs): 一个星号 * 作用是将tuple或者list中的元素进行unpack,分开传入,作为多个参数; 两个星号** 作用是把dict类型的数据作为参数传入。 1.2.tuple、list、dict list是一种有序的集合,可以随时添加和删除其中的元素 执行结果: # list是一种有序的集合,可以随时添加和删除其中的元素 list_1 = [1,2,3,4,5] list_1[

m0_38057941的博客 1560

深度学习如何入门

很早之前,红色石头就听过雷军说的一句话:“站在风口上,猪都可以飞起来”!这句话用来形容现在的深度学习非常贴切。是的,近几年来,深度学习的发展极其迅速。其影响力已经遍地开花,在医疗、自动驾驶、机器视觉、自然语言处理等各个方面大展身手。在深度学习这个世界大风口上,谁能抢先抢先进入深度学习领域,学会运用深度学习技术,谁就能真正地在 AI 时代“飞”起来。 对于每一个想要开始深度学习的大学生、IT 程序员...

GitChat 9880

深度学习——模型构建

模型构建 1 神经网络的构造 PyTorch中神经网络构造一般是基于 Module 类的模型来完成的,它让模型构造更加灵活。 Module 类是 nn 模块里提供的一个模型构造类,是所有神经⽹网络模块的基类,我们可以继承它来定义我们想要的模型。下面继承 Module 类构造多层感知机。这里定义的 MLP 类重载了 Module 类的 init 函数和 forward 函数。它们分别用于创建模型参数和定义前向计算。前向计算也即正向传播。 import torch from torch import nn c

m0_61796189的博客 3115

PyTorch 深度学习框架快速上手指南

PyTorch深度学习框架快速上手指南

NilEra的博客 3124

【深度学习】pytorch——快速入门

PyTorch是一个开源的机器学习框架,它提供了丰富的工具和库,用于构建和训练深度学习模型。

urge的博客 1840

pytorch训练时报传入的数据为元组(tuple)类型,无法to.device

解决pytroch训练时报tuple类型错误,和ValueError: too many values to unpack (expected 2)

cslcdfjd的博客 3918

如何用 PyTorch 快速入门深度学习:从基础到实战

PyTorch深度学习入门指南 PyTorch作为当前最流行的深度学习框架,以其灵活性和易用性成为研究人员和工程师的首选工具。本文提供PyTorch快速入门教程,涵盖核心概念和实操步骤:1)介绍PyTorch基本架构和安装方法;2)讲解Tensor数据结构及其运算操作;3)演示如何构建神经网络模型;4)详解模型训练流程(前向传播、损失计算、反向传播);5)提供模型评估与保存方法。文章还简要提及学习率调度、Dropout等优化技巧,帮助初学者快速掌握深度学习基础。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 825

深度学习入门先学哪个框架?PyTorch还是TensorFlow

深度学习框架是构建神经网络模型的核心工具,它封装了张量运算、自动求导等底层能力,让研究者能更专注模型设计与实验验证。从原理上看,PyTorch采用动态计算图,调试更直观,适合快速迭代研究;而TensorFlow在静态图优化与跨平台部署方面更具优势。对初学者而言,理解框架差异并不等于要同时掌握两者,关键在于先跑通一次完整的训练闭环:数据加载、模型构建、损失计算、反向传播与参数更新。不同技术场景对框架选择有不同要求,学术复现与原型验证通常优先PyTorch,企业服务端与移动端部署则常见TensorFlow。本文

weixin_30684743的博客 516

Pytorch深度学习入门与实战

PyTorch是一个开源机器学习Python库,用于深度学习实现,如计算机视觉(使用武器)和自然语言处理。它是由Facebook的AI Research Lab(Fair)于2016年开发的,自数据科学和ML领域以来已采用。Pytorch为已经熟悉Python的人提供了直观的机器,并且具有oop支持和动态计算图等具有很大的功能。除了构建深度神经网络之外,由于其GPU加速,Pytorch也非常适合复杂的数学计算。此功能允许Pytorch使用计算机的GPU来大量加速计算。

Duyuqq的博客 2303

Python 手动编译生成动态链接库(.so)文件

其中,-shared 选项表示生成共享库文件,-fPIC 选项表示以位置无关代码的形式生成代码,后面的 add_wrap.c 表示需要编译的 C 文件,-o 选项指定输出的文件名为 add.so,在这里,我们定义一个简单的函数,该函数将两个整数相加并返回结果。现在,我们可以使用 Python 中的 ctypes 模块加载我们刚刚编译的动态链接库,并测试其中暴露的函数。由于我们需要使用 C 编写包装函数并将其编译成动态链接库,因此我们需要生成一个 C 头文件,以便在 C 中调用 Python 函数。

. 2625

PyTorch深度学习快速入门

PyTorch深度学习的快速入门教程,教会你进一步了解PyTorch深度学习,理解相关代码及其理论知识,十分适合python小白进行前期的的神经网络学习。

悠眠小虫的博客 1534

利用dxflib读写cad文件

本篇主要在qt做一个例子读取cad文件数据,使用的开源库是dxflib。用到dxflib的DL_CreationAdapter,DL_Dxf。DL_Dxf是用来读取.dxf文件的类,DL_CreatinAdapter是一个容器,当DL_Dxf加载.dxf文件后,就会响应DL_CreationAdapter这个类,读取cad数据。我们来看看...

weixin_33759269的博客 1984

【深度学习】【部署】Flask快速部署Pytorch模型【入门】

【深度学习】【部署】Flask快速部署深度学习模型【入门】

yangyu0515的博客 7512

Python实战:5分钟搞定N-CMAPSS航空发动机数据集解析(附完整代码)

本文提供了一份针对N-CMAPSS航空发动机数据集的快速解析实战指南。通过Python的h5py库,详细演示了如何读取HDF5文件结构、理解数据分类(如传感器、健康参数、场景描述符)并加载为Pandas DataFrame。文章还澄清了数据集中常见的变量数量疑惑,并给出了从数据加载到构建剩余使用寿命预测模型预处理流水线的完整代码,帮助工程师和研究人员高效入门航空发动机预测性维护分析。

weixin_29057065的博客 421

R语言分段回归

1.利用虚拟变量进行线性回归 (MEdata.csv的数据来源:https://github.com/ChenQihome9/优快云-Data-Library/blob/master/MEdata.csv) 问题13:针对TAX~GDP,使用分段回归方法,找到其回归方程。编程,并根据程序结果叙述如下几方面问题:(1)分几段最佳?(不超过5段内)(2)分段位置定在哪儿最佳?(3)写出最佳方...

ChenQihome9的博客 1万+

基于PyTorch的深度学习快速入门教程

最近小组汇报正好用到了pytorch,所以想把内容整理成博客。主要参考了《Python深度学习:基于PyTorch》前几章和网上的一些入门教程。通过这篇博客 ,你可以: 对PyTorch框架有一定的了解 对PyTorch中的Tensor张量、autograd自动求导、反向传播等概念有一定了解并掌握相关代码 用PyTorch实现一个简单的机器学习算法(函数拟合) 使用PyTorch神经网络工具箱搭建一个简单的卷积神经网络模型(minist手写数字识别) 训练搭建的网络并通过该模型来预测 …

小王同学的博客 1万+

HBase骚操作之数据加载方式BulkLoad

本文研究了一种HBase BulkLoad的入库方式,该方式利用HBase的数据信息按照特定格式存储在hdfs内这一原理,直接在HDFS中生成持久化的HFile数据格式文件,然后上传至合适位置,即完成巨量数据快速入库的办法。该方式配合MapReduce完成,高效便捷,而且不占用Region资源,增添负载,在大数据量写入时能极大的提高写入效率,并降低对Hbase节点的写入压力。HBase BulkLoad对于异构数据源的合并及大量数据一次性导入具有重要指导意义,相比HBase Put操作在性能上具有较高的优势

石榴姐yyds 7789

PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】笔记

PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】笔记一级目录二级目录三级目录 链接: PyTorch深度学习快速入门教程(绝对通俗易懂!)【小土堆】. 一级目录 二级目录 三级目录

sinat_39448069的博客 2万+

基于 MFC 和 C++ 的语音识别客户端实现方案

语音 SDK:[Microsoft Speech SDK](https://learn.microsoft.com/zh-cn/azure/cognitive-services/speech-service/speech-sdk)(建议使用最新版)1. **Azure 语音服务密钥**:需要在 [Azure 门户](https://portal.azure.com/) 中创建语音资源,获取密钥和区域(如 `eastasia`),替换代码中的占位符。

寒寒豆豆软件公司的博客 152

OpenOCD入门到精通:第20章 Target 子系统源码分析

摘要:本章深入分析OpenOCD Target子系统的核心实现机制。重点包括:1) 通过target_type虚函数表实现多架构抽象,支持ARM、RISC-V等30+种目标;2) ARM ADIv5协议栈实现,包含DAP/AP核心数据结构和访问机制;3) 分层架构设计,从调试接口层到传输层的完整调用链路。系统采用面向对象思想,统一管理目标状态、寄存器缓存、断点/观察点等调试要素,为上层提供标准化的调试操作接口。

从事嵌入式linux android驱动开发,拥有全栈能力 176

好书推荐丨细说PyTorch深度学习:理论、算法、模型与编程实现

本期博主给大家推荐一本深度学习的全新正版书籍,感兴趣的小伙伴快来看看吧~

AIGC 3万+

某验SVG图标验证码识别思路(非训练)

本文提出了一种无需训练的某验SVG图标验证码识别方法。通过分析SVG文件结构,使用正则表达式提取静态图标数据,并借助CairoSVG库转换为PNG格式。随后采用坐标定位方式裁剪出12个固定位置的图标,最后利用ResNet50提取特征,通过余弦相似度匹配目标图标。该方法避免了训练目标检测模型,实现了高效准确的验证码识别。关键步骤包括SVG文件预处理、图标定位裁剪和基于预训练模型的相似度比对。

九月镇灵将的博客 417

从入门到精通:DL on Flink PyTorch Estimator高效开发指南

DL on Flink是一个将Flink与深度学习框架(如PyTorch、TensorFlow等)集成的强大工具,旨在实现在Flink集群上进行分布式深度学习训练和推理。本指南将带你全面掌握PyTorch Estimator的开发流程,从环境搭建到模型部署,让你快速上手并高效开发分布式深度学习应用。 ## 一、DL on Flink核心架构解析 🧠 DL on Flink采用分层架构设计,完

gitblog_00286的博客 1074

YOLOv8与Swin Transformer的完美结合:如何提升目标检测的精度与速度

Swin Transformer(Shifted Window Transformer)是一种新型的视觉Transformer架构,采用了局部窗口(Window)和局部窗口偏移(Shifted Window)的策略,极大减少了计算复杂度,同时保持了全局感知能力。局部窗口注意力:每个窗口内的元素进行自注意力计算,减少计算量。窗口偏移:通过在不同层次引入窗口偏移,增强了全局信息的交互。层级设计:通过堆叠多个层次的模块,逐渐捕捉不同尺度的特征。

shrgegrb的博客 2150

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

学习pytorch: 深度学习入门建议

本文主要介绍了使用pytorch作为框架入门深度学习。 其中第1节(深度学习入门)内容较多,建议边看第1节边实践第2节(Pytorch入门)中的内容(主要是2.1和2.2)。

newxuyangcao 3800

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: Python基础:列表、元组、字典比较以及API含义
下一篇: Fabric 搭建测试网络并部署智能合约
Blockchain410
博客等级 码龄5年 3230粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Blockchain410

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值