PyTorch学习4

Pytorch利用迁移学习识别4位定长验证码 目前市场上利用深度学习识别验证码最简单的应该就是识别定长验证码了,最多52个字母+10个数字的分类组合,利用非常简单的神经网络结构基本就能识别,下面使用Pytorch迁移学习来实现一遍,使用迁移学习完全不用自己搭建模型,只需要自己做数据集,直接开练 准备数据集,我的数据集是这样,我这里有十几二十种数据集,需要的小伙伴可以私聊我 话不多说, 直接上pytorch训练的基本步骤 先导入库 from torch.utils.data import Dataset import torchvision.tr 阅读详情

PyTorch 实现多层网络
引入模块,读取数据
构建计算图(构建网络模型)
损失函数与优化器
开始训练模型
对训练的模型预测结果进行评估

import torch
import numpy as np
from torch import nn
from torch.autograd import Variable
import torch.nn.functional as F
import matplotlib.pyplot as plt
def plot_decision_boundary(model, x, y):
    # Set min and max values and give it some padding
    x_min, x_max = x[:, 0].min() - 1, x[:, 0].max() + 1
    y_min, y_max = x[:, 1].min() - 1, x[:, 1].max() + 1
    h = 0.01
    # Generate a grid of points with distance h between them
    xx, yy = np.meshgrid(np.arange(x_min, x_max, h), np.arange(y_min, y_max, h))
    # Predict the function value for the whole grid
    Z = model(np.c_[xx.ravel(), yy.ravel()])
    Z = Z.reshape(xx.shape)
    # Plot the contour and training examples
    plt.contourf(xx, yy, Z, cmap=plt.cm.Spectral)
    plt.ylabel('x2')
    plt.xlabel('x1')
    plt.scatter(x[:, 0], x[:, 1], c=y.reshape(-1), s=40, cmap=plt.cm.Spectral)
def draw_picture():    
    np.random.seed(1)
    m = 400 # 样本数量
    N = int(m/2) # 每一类的点的个数
    D = 2 # 维度
    x = np.zeros((m, D))
    y = np.zeros((m, 1), dtype='uint8') # label 向量,0 表示红色,1 表示蓝色
    a = 4
    for j in range(2):
        ix = range(N*j,N*(j+1))
        t = np.linspace(j*3.12,(j+1)*3.12,N) + np.random.randn(N)*0.2 # theta
        r = a*np.sin(4*t) + np.random.randn(N)*0.2 # radius
        x[ix] = np.c_[r*np.sin(t), r*np.cos(t)]
        y[ix] = j
    plt.scatter(x[:, 0], x[:, 1], c=y.reshape(-1), s=40, cmap=plt.cm.Spectral)
    plt.show()
    plt.close()
    return x,y
def logistic_regression(x,w,b):
    return torch.mm(x, w) + b
def plot_logistic(x,w,b):
    x = Variable(torch.from_numpy(x).float())
    out = F.sigmoid(logistic_regression(x,w,b))
    out = (out > 0.5) * 1
    return out.data.numpy()
def logistic_train(x,y):
    x = torch.from_numpy(x).float()
    y = torch.from_numpy(y).float()
    w = nn.Parameter(torch.randn(2, 1))
    b = nn.Parameter(torch.zeros(1))
    optimizer = torch.optim.SGD([w, b], 1e-1)
 
    criterion = nn.BCEWithLogitsLoss()
    
    for e in range(100):
        out = logistic_regression(Variable(x),w,b)
        loss = criterion(out, Variable(y))
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
        if (e + 1) % 20 == 0:
            print('epoch: {}, loss: {}'.format(e+1, loss.item()))
    plot_decision_boundary(lambda x: plot_logistic(x,w,b), x.numpy(), y.numpy())
    plt.title('logistic regression')
    plt.show()
    plt.close()
def two_network_train(x,y):
    # 定义两层神经网络的参数
    w1 = nn.Parameter(torch.randn(2, 4) * 0.01) # 隐藏层神经元个数 2
    b1 = nn.Parameter(torch.zeros(4))
    
    w2 = nn.Parameter(torch.randn(4, 1) * 0.01)
    b2 = nn.Parameter(torch.zeros(1))
    
    # 定义模型
    def two_network(x):
        x1 = torch.mm(x, w1) + b1
        x1 = F.tanh(x1) # 使用 PyTorch 自带的 tanh 激活函数
        x2 = torch.mm(x1, w2) + b2
        return x2
    x = torch.from_numpy(x).float()
    y = torch.from_numpy(y).float()
    optimizer = torch.optim.SGD([w1, w2, b1, b2], 1.)
    criterion = nn.BCEWithLogitsLoss()
    # 我们训练 10000 次
    for e in range(10000):
        out = two_network(Variable(x))
        loss = criterion(out, Variable(y))
        optimizer.zero_grad()
        loss.backward()
        optimizer.step()
        if (e + 1) % 1000 == 0:
            print('epoch: {}, loss: {}'.format(e+1, loss.item()))
    def plot_network(x):
        x = Variable(torch.from_numpy(x).float())
        x1 = torch.mm(x, w1) + b1
        x1 = F.tanh(x1)
        x2 = torch.mm(x1, w2) + b2
        out = F.sigmoid(x2)
        out = (out > 0.5) * 1
        return out.data.numpy()
    plot_decision_boundary(lambda x: plot_network(x), x.numpy(), y.numpy())
    plt.title('2 layer network')
    plt.show()
    plt.close()
def sequential_train(x,y):
    x = torch.from_numpy(x).float()
    y = torch.from_numpy(y).float()
    # Sequential
    seq_net = nn.Sequential(
        nn.Linear(2, 4), # PyTorch 中的线性层,wx + b
        nn.Tanh(),
        nn.Linear(4, 1)
    )
    # 通过 parameters 可以取得模型的参数
    param = seq_net.parameters()
    
    criterion = nn.BCEWithLogitsLoss()
    # 定义优化器
    optim = torch.optim.SGD(param, 1.)
    # 我们训练 10000 次
    for e in range(10000):
        out = seq_net(Variable(x))
        loss = criterion(out, Variable(y))
        optim.zero_grad()
        loss.backward()
        optim.step()
        if (e + 1) % 1000 == 0:
            print('epoch: {}, loss: {}'.format(e+1, loss.item()))
    def plot_seq(x):
        out = F.sigmoid(seq_net(Variable(torch.from_numpy(x).float()))).data.numpy()
        out = (out > 0.5) * 1
        return out
    plot_decision_boundary(lambda x: plot_seq(x), x.numpy(), y.numpy())
    plt.title('sequential') 
    plt.show()
    plt.close()   
    
    
    #两种保存模型的办法
    # 1.将参数和模型保存在一起
    torch.save(seq_net, 'save_seq_net.pth')
    # 2.保存模型参数
    torch.save(seq_net.state_dict(), 'save_seq_net_params.pth')
def load_moudle():
    # 读取保存的模型
    seq_net1 = torch.load('save_seq_net.pth')
    print(seq_net1)
    print(seq_net1[0].weight)
    seq_net2 = nn.Sequential(
      nn.Linear(2, 4),
      nn.Tanh(),
      nn.Linear(4, 1)
    )
    seq_net2.load_state_dict(torch.load('save_seq_net_params.pth'))  
    print(seq_net2)
    print(seq_net2[0].weight)
def module_train(x,y):
    class module_net(nn.Module):
        def __init__(self, num_input, num_hidden, num_output):
            super(module_net, self).__init__()
            self.layer1 = nn.Linear(num_input, num_hidden)
            
            self.layer2 = nn.Tanh()
            
            self.layer3 = nn.Linear(num_hidden, num_output)
            
        def forward(self, x):
            x = self.layer1(x)
            x = self.layer2(x)
            x = self.layer3(x)
            return x
    x = torch.from_numpy(x).float()
    y = torch.from_numpy(y).float()
    mo_net = module_net(2, 4, 1)    
    optim = torch.optim.SGD(mo_net.parameters(), 1.)
    criterion = nn.BCEWithLogitsLoss()
    # 我们训练 10000 次
    for e in range(10000):
        out = mo_net(Variable(x))
        loss = criterion(out, Variable(y))
        optim.zero_grad()
        loss.backward()
        optim.step()
        if (e + 1) % 1000 == 0:
            print('epoch: {}, loss: {}'.format(e+1, loss.item()))
if __name__ == "__main__":
    x,y=draw_picture()
    logistic_train(x,y)# 自定义两层神经网络
    sequential_train(x,y)# 定义sequential神经网络
    load_moudle()
    module_train(x,y)# 定义module神经网络
深度学习100例 | 第4例:水果识别 - PyTorch实现 大家好,我是K同学啊,今天讲《深度学习100例》PyTorch版的第4个例子,前面一些例子主要还是以带大家了解PyTorch为主,建议手动敲一下代码,只有自己动手了,才能真正体会到里面的内容,光看不练是没有用的。今天的重点是在PyTorch调用VGG-16算法模型。先来了解一下PyTorch与TensorFlow的区别PyTorch VS TensorFlow:当然如果你时间充足,我建议两个模型都是需要了解一下的,这两者都还是很重要的。🍨 本文的重点:将讲解如何使用PyTorch构建神经网络模型(将对这一. 阅读详情

相关推荐

Multi-Task-Learning-PyTorch:PyTorch多任务学习架构的实现,包括MTI-Net(ECCV2020)

多任务学习 此仓库旨在在PyTorch中实施几种多任务学习模型和培训策略。 该代码库是对以下工作的补充: , ,Wouter Van Gansbeke,Marc Proesmans,Dengxin Dai和Luc Van Gool。 , 和Luc Van Gool。 在可以找到有关多任务学习的最新作品列表。 安装 该代码与最新的Pytorch版本一起运行,例如1.4。 假设 ,最重要的软件包可以按以下方式安装: conda install pytorch torchvision cudatoolkit=10.2 -c pytorch conda install imageio scikit-image # Image operations conda install -c conda-forge opencv # OpenCV cond

PyTorch学习:多层神经网络的多种实现方式

import torch import numpy as np from torch import nn from torch.autograd import Variable import torch.nn.functional as F import matplotlib.pyplot as plt def plot_decision_boundary(model, x, y): #...

Hobart 1108

利用BMC和KVM远程安装联想服务器Ubuntu 22.04的完整指南

本文提供了一份详尽的指南,介绍如何利用联想服务器的BMC(基板管理控制器)和KVM(键盘、视频、鼠标)重定向功能,远程安装Ubuntu 22.04 LTS操作系统。内容涵盖从准备工作(如获取BMC信息、配置Java环境)、登录BMC并启动远程控制台,到挂载ISO镜像、设置引导以及完成Ubuntu安装与后续配置的全过程。该方法能极大提升服务器部署与运维效率,尤其适用于无法物理接触服务器的场景。

p8q9r0的博客 624

【Python】神经网络回归预测模型,Python代码实现

基于物联网检测设备,大量采集流量数据和液位高度数据存储在时序数据库(influxdb)中。并采用下面代码对数据进行预测。

神精兵院长的博客 918

Cursor聊天记录迁移工具:实现跨设备AI对话同步与备份

在软件开发中,数据持久化与迁移是常见需求,尤其当工具依赖本地存储时。SQLite作为轻量级关系型数据库,因其嵌入式、零配置特性,常被用于存储应用状态与用户数据。其WAL(预写式日志)模式提升了并发性能,但也增加了数据操作复杂性。通过命令行工具与JSON序列化技术,可以实现结构化数据的提取、转换与安全迁移,这对于保障开发资产的连续性与可移植性具有重要价值。例如,在AI辅助编程场景下,开发者与AI的对话记录包含关键的问题分析、解决方案与决策逻辑,是重要的上下文资产。cursor-chat-transfer工具正

weixin_42551967的博客 533

多核系统核间通信(IPC)设计:从硬件机制到软件实现

在多核处理器与嵌入式系统设计中,核间通信(IPC)是实现计算资源协同工作的核心技术。其原理基于共享内存、硬件邮箱与中断等底层硬件机制,通过构建结构化的消息传递通道,实现核间高效、可靠的数据交换。该技术的核心价值在于打破多核间的壁垒,将分散的计算单元整合为有机整体,从而显著提升系统整体性能与响应能力。在工程实践中,IPC广泛应用于智能座舱、边缘AI网关、实时控制系统等场景,用于处理如仪表显示、AI推理、实时控制等复杂任务。本文聚焦于基于共享内存与VRING的消息队列实现,深入剖析缓存一致性、内存屏障等关键问题

weixin_27006759的博客 598

【深度学习Pytorch】二、多层神经网络

有关python图像绘制。

qq_49183286的博客 398

Windows10 搭建 FTP 服务器

问题: 有这么一个需求,博主需要对班级同学的信息进行收集,同学的信息是一个个的文件, 正常是每个同学将自己的信息打包压缩通过 QQ 或者邮箱方式发送给博主, 博主一个个接收这些压缩包,然后进行解压,再统一放到一个文件夹下, 但是博主觉得这样子实在是太麻烦了,如果某一个同学的信息来回变动,就需要接收很多次,更改很多次, 另外如果消息过多还会产生漏掉某个同学的信息的问题。 解决方法: 如果可以使...

assiduous_me的博客 3965

深度学习(一)多层神经网络,nn.Module搭建和保存网络

多层神经网络(nn.Module) 文章目录多层神经网络(nn.Module)1. Logistic回归2.神经网络3.nn.Module 上节我们讲了神经网络,可以看到使用了激活函数之后,神经网络可以通过改变权重实现任意形状,越是复杂的神经网络能拟合的形状越复杂,可以任意逼近非线性函数,这就是著名的神经网络万有逼近定理。 下面用实例来说明神经网络效果更好。 import torch import numpy as np from torch import nn import torch.nn.functi

qq_39809262的博客 1473

中小型微服务系统 硬件设备如何部署,QPS大概多少

作为一名合格的开发工程师,不仅仅要在前期开发阶段对业务和技术有深入了解,知道选用哪种合适的技术,业务如何拆分,还要思考后期线上环境,资源,延迟,性能等如何优化维护以及分布式系统一些线上生产的一些问题。 本篇主要针对之前了解的情况对硬件设备资源做一个简单的介绍: 首先分布式系统线上实践问题,我们应该对公司的流量,各个服务,网管,注册中心应该如何部署,部署多少台机器才合适,每台机器的配置如何,每天整体流量有多少,高峰期的请求量有多少,你的整体系统是否扛得住(注:很多公司现在直接使用K8S docker 实现

wangxuelei036的博客 1万+

STM32F4串口接收ATGM336H GPS数据,手把手教你解析NMEA协议并转换经纬度格式

本文详细介绍了如何使用STM32F4开发板通过串口接收ATGM336H GPS模块的NMEA协议数据,并解析GNRMC语句获取经纬度信息。内容涵盖硬件连接、NMEA协议深度解析、数据校验实现以及经纬度格式转换的数学原理与代码实现,为嵌入式开发者提供完整的GPS数据处理解决方案。

weixin_42522575的博客 497

PyTorch | Tensor、Numpy、Variable之间的转换

其中,Numpy和Variable之间的转换可以通过tensor推导出来。 Numpy->Variable:拆分为两步, Numpy->Tensor: torch.from_numpy(test) Tensor->Variable:Variable(test) 组合在一起就是:Variable(torch.from_numpy(test)) 同样的道理,Variable->Numpy:拆分为两步, Variable->Tensor:test.data() Te..

以秘 436

28.Anaconda安装jupyter notebook、jupyterlab及体验

手贱,不小心将Anaconda自带得jupyter给卸载了,没法子了查了好多资料都比较麻烦,所以自己摸索着重新安装,记录一下心得。说明:Anaconda没有加入环境变量,Anaconda官方建议不要将Anaconda加入环境变量,这就意味着他和python是可以共存的。

迷逝 5029

pytorch必须掌握的的4种学习率衰减策略

原文:pytorch必须掌握的的4种学习率衰减策略1.指数衰减2. 固定步长衰减3. 多步长衰减4. 余弦退火衰减5. 上述4种学习率动态更新策略的说明 梯度下降算法需要我们指定一个学习率作为权重更新步幅的控制因子,常用的学习率有0.01、0.001以及0.0001等,学习率越大则权重更新。一般来说,我们希望在训练初期学习率大一些,使得网络收敛迅速,在训练后期学习率小一些,使得网络更好的收敛到最优解。下图展示了随着迭代的进行动态调整学习率的4种策略曲线: 上述4种策略为自己根据资料整理得到的衰减类型:指.

紫芝的博客 1646

SpringCloud最新最全面试题

在服务注册与发现中,有一个注册中心。当服务器启动的时候,会把当前自己服务器的信息比如服务地址通讯地址等以别名方式注册到注册中心上。另一方(消费者服务提供者),以该别名的方式去注册中心上获取到实际的服务通讯地址,然后再实现本地RPC调用RPC远程调用框架核心设计思想:在于注册中心,因为使用注册中心管理每个服务与服务之间的一个依赖关系(服务治理概念)。在任何RPC远程框架中,都会有一个注册中心存放服务地址相关信息(接口地址)。

qq_38196449的博客 4329

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

树莓派4B安装系统,pytorch,opencv搭建深度学习目标检测模型

树莓派4B跑深度学习模型 树莓派4B简介 树莓派就像一个小型的电脑,麻雀虽小,但五脏俱全,他也有总线系统,是一个非常优秀的嵌入式设备, 树莓派系统烧录 树莓派系统烧录方法有很多种,大致的思路和window系统安装类似,首先你需要需要烧录的系统镜像,然后再下载一款系统烧录工具,然后一直点击下一步即可,这里给你烧录工具的下载地址 上面那个是工具的图标,下边是下载地址。 然后你还需要一个系统镜像,这个系统如果需要的话就评论区留言吧,等我把系统文件放到云盘给大家在评论区放链接。 烧录步骤 安装烧录系统的工具后图标

qq_35741782的博客 4783

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

inception v4 官方实现_轻松学Pytorch迁移学习实现表面缺陷检查

点击上方蓝字关注我们微信公众号:OpenCV学堂关注获取更多计算机视觉与深度学习知识引言 ·大家好,我又又好久没有更新这个系列了,主要原因归根结底只有一个懒,所谓 一勤天下无难事,百思心中有良谋。以后还争取每周更新,这次隔了一周没有更新,对不起大家了。今天给大家更新的是如何基于torchvision自带的模型完成图像分类任务的迁移学习,前面我们已经完成了对对象检测任务的迁移学习,这里补...

weixin_35822534的博客 856

计算机控制技术及应用

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

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

pytorch的4种学习率衰减策略

作者丨机器学习入坑者@知乎(已授权) 来源丨https://zhuanlan.zhihu.com/p/93624972 编辑丨极市平台 极市导读 本文介绍了四种衰减类型:指数衰减、固定步长的衰减、多步长衰、余弦退火衰减并逐一介绍其性质,及pytorch对应的使用方式。>>本周六(5月8日)早上8:50,广东省CVPR 2021论文预交流在线学术报告,点击获取直播链接 梯度下降算法需要我们指定一个学习率作为权重更新步幅的控制因子,常用的学习率有0.01、0.001以及0.0001..

爱CV 6376

【PyTorch学习笔记】安装PyTorch2.4.0,CUDA12.4

安装PyTorch2.4.0,CUDA12.4

HeYixin1997的博客 3640

Ubuntu16.0.4下安装深度学习框架:PyTorch

PyTorch 是Facebook于2017年推出的一个深度学习框架,支持采用 Python 语言编程。PyTorch推出之后大受欢迎,现在已经是 GitHub 上增长速度第二快的开源项目,在过去的 12 个月里,贡献者增加了 2.8 倍,仅次于Tensorflow。2018年12月8日官方已经发布 PyTorch1.0 稳定版。 笔者在此推荐一本书籍叫做《深度学习入门之PyTor...

dulingwen的博客 1155

Pytorch学习4

导入相关模块 import torch import torch.nn as nn import torchvision import torchvision.transforms as transforms # GPU配置 device = torch.device('cuda:0' if torch.cuda.is_available() else 'cpu') # 超参数 num_epo...

weixin_39287932的博客 261

PyTorch 深度学习实践 第4讲

第4讲 反向传播back propagation源代码 B站 刘二大人,传送门PyTroch 深度学习实践——反向传播 import torch x_data = [1.0, 2.0, 3.0] y_data = [2.0, 4.0, 6.0] w = torch.Tensor([1.0]) # w的初值为0.1 w.requires_grad = True #需要计算梯度 def forward(x): return x*w #w是一个Tensor def loss(x, ...

bit452的专栏 3万+

树莓派 Raspberry Pi 4B下PyTorch TensorFlow 深度学习环境配置

树莓派 Raspberry Pi 4B下PyTorch TensorFlow 深度学习环境配置 Install DL on a Raspberry Pi 4. 请参考https://qengineering.eu/install-pytorch-on-raspberry-pi-4.html 以及 https://github.com/Qengineering/RPi-image

weixin_41809001的博客 1420

Pytorch 搭建自己的YoloV4目标检测平台学习笔记

前言 本文为B站up主Bubbliiiing《Pytorch 搭建自己的YoloV4目标检测平台》系列视频的学习笔记,主要为实践。 一、数据集的准备 数据集格式:voc格式 数据集制作: 用到的软件:labelImg 下载安装好之后打开界面如下: 1.创建3个文件夹 其中,photo用于存放收集的需要标注的原图片 Annotations和JPEGImages用于后续训练 使用Open dir打开photo,对图片进行标注(建议从下往上标注); 标注完成后用Change Save Dir 存放标签文件(

weixin_65598494的博客 1266

PyTorch 0.4新版本学习手册及升级指南

此博文转自 【导读】今天大家比较关心的是PyTorch在GitHub发布0.4.0版本,专知成员Huaiwen详细讲解了PyTorch新版本的变动信息, 本次升级, 只做了一件事情, 就是把Tensor 类和 Variable 类 合并了, 且官方同时更新了API和Tutorials, 可以肯定, 以后的人不会再学0.3.1。专知成员Huaiwen也计划于今日更新一个系列的新版PyTorch简单上...

欢迎来到打不死的小强的专栏 486
上一篇: 线性回归和卡方分布与方差分析
下一篇: PyTorch实现L1,L2正则化以及Dropout
Jorah
博客等级 码龄8年 60粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值