这是我们常见的pytorch版的crnn网络框架,我遵循老师的想法,用C++和libtorch也搭建了一个一模一样的框架,主要是用来部署用的,我暂时把libtorch版本的代码放到了私密文章里面,还没有公开,有需要的私信我

import torch.nn as nn
import torch.nn.functional as F
from collections import OrderedDict
class BidirectionalLSTM(nn.Module):# Inputs hidden units Outdef __init__(self, nIn, nHidden, nOut):super(BidirectionalLSTM, self).__init__()self.rnn = nn.LSTM(nIn, nHidden, bidirectional=True)#512-nh256 256-256#1、LSTM(512,256,True)2、LSTM(256, 256, bidirectional=True)self.embedding = nn.Linear(nHidden * 2, nOut)#1、Linear(in_features=512, out_features=256, bias=True)2、Linear(in_features=512, out_features=6736, bias=True)def forward(self, input):recurrent, _ = self.rnn(input)T, b, h = recurrent.size() #获取张量的形状大小t_rec = recurrent.view(T * b, h)output = self.embedding(t_rec)  # [T * b, nOut] [142,256] [142,6736]output = output.view(T, b, -1)return outputclass CRNN(nn.Module):def __init__(self, imgH, nc, nclass, nh, n_rnn=2, leakyRelu=False):super(CRNN, self).__init__()assert imgH % 16 == 0, 'imgH has to be a multiple of 16'ks = [3, 3, 3, 3, 3, 3, 2]ps = [1, 1, 1, 1, 1, 1, 0]ss = [1, 1, 1, 1, 1, 1, 1]nm = [64, 128, 256, 256, 512, 512, 512]cnn = nn.Sequential()def convRelu(i, batchNormalization=False):nIn = nc if i == 0 else nm[i - 1]nOut = nm[i]cnn.add_module('conv{0}'.format(i),nn.Conv2d(nIn, nOut, ks[i], ss[i], ps[i])) #输入输出卷积核大小步长填充if batchNormalization:cnn.add_module('batchnorm{0}'.format(i), nn.BatchNorm2d(nOut))if leakyRelu:cnn.add_module('relu{0}'.format(i),nn.LeakyReLU(0.2, inplace=True))else:cnn.add_module('relu{0}'.format(i), nn.ReLU(True))convRelu(0) #调用函数cnn.add_module('pooling{0}'.format(0), nn.MaxPool2d(2, 2))  # 64x16x64convRelu(1) #cnn.add_module('pooling{0}'.format(1), nn.MaxPool2d(2, 2))  # 128x8x32convRelu(2, True) #convRelu(3) #cnn.add_module('pooling{0}'.format(2),nn.MaxPool2d((2, 2), (2, 1), (0, 1)))  # 256x4x16convRelu(4, True)convRelu(5)cnn.add_module('pooling{0}'.format(3),nn.MaxPool2d((2, 2), (2, 1), (0, 1)))  # 512x2x16convRelu(6, True)  # 512x1x16self.cnn = cnnself.rnn = nn.Sequential(BidirectionalLSTM(512, nh, nh),BidirectionalLSTM(nh, nh, nclass))def forward(self, input): #前向传播函数# conv featuresconv = self.cnn(input)b, c, h, w = conv.size()#print(conv.size())#assert h == 1, "the height of conv must be 1"conv = conv.squeeze(2) # b *512 * width,对数据的维度进行压缩conv = conv.permute(2, 0, 1)  # [w, b, c]output = F.log_softmax(self.rnn(conv), dim=2)return outputdef weights_init(m):classname = m.__class__.__name__if classname.find('Conv') != -1:m.weight.data.normal_(0.0, 0.02)elif classname.find('BatchNorm') != -1:m.weight.data.normal_(1.0, 0.02)m.bias.data.fill_(0)def get_crnn(config):model = CRNN(config.MODEL.IMAGE_SIZE.H, 1, config.MODEL.NUM_CLASSES + 1, config.MODEL.NUM_HIDDEN)print("model--->",model)model.apply(weights_init)return model

pytorch版crnn网络框架相关推荐

  1. <计算机视觉四> pytorch版yolov3网络搭建

    鼠标点击下载     项目源代码免费下载地址 <计算机视觉一> 使用标定工具标定自己的目标检测 <计算机视觉二> labelme标定的数据转换成yolo训练格式 <计算机 ...

  2. CRNN——pytorch + wrap_ctc编译,实现pytorch版CRNN

    文章目录 简介 CTC网络的输入 CTC网络的计算过程 CTC网络的输出 pytorch安装 warp-CTC安装 Bug解决 References 简介 CTC可以生成一个损失函数,用于在序列数据上 ...

  3. 【动手学深度学习PyTorch版】19 网络中的网络 NiN

    上一篇请移步[动手学深度学习PyTorch版]18 使用块的网络 VGG_水w的博客-CSDN博客 目录 一.网络中的网络 NiN 1.1 NiN ◼ 全连接层的问题 ◼ 大量的参数会带来很多问题 ◼ ...

  4. 中文教程!PyTorch版《动手学深度学习》开源了,最美DL书遇上最赞DL框架

    点击我爱计算机视觉标星,更快获取CVML新技术 本文经机器之心(微信公众号:almosthuman2014)授权转载,禁止二次转载 机器之心报道 项目作者:ShusenTang 参与:思 想要入门最前 ...

  5. Android 开源网络框架OKHttp4 Kotlin版本源码解析

    Android 开源网络框架OKHttp 4 解析 文章目录 Android 开源网络框架OKHttp 4 解析 1.Http2.0协议主要增加的优化点: 2.OkHttp支持的内容 3.OkHttp ...

  6. 伯禹公益AI《动手学深度学习PyTorch版》Task 04 学习笔记

    伯禹公益AI<动手学深度学习PyTorch版>Task 04 学习笔记 Task 04:机器翻译及相关技术:注意力机制与Seq2seq模型:Transformer 微信昵称:WarmIce ...

  7. PyTorch 版 EfficientDet 比官方 TF 实现快 25 倍?这个 GitHub 项目数天狂揽千星

    来源:机器之心 本文约3646字,建议阅读8分钟. 本文介绍在 Github 项目中,开发者 zylo117 开源了 PyTorch 版本的 EfficientDet,速度比原版高 20 余倍.如今, ...

  8. PyTorch版EfficientDet比官方TF实现快25倍?这个GitHub项目数天狂揽千星

    点上方蓝字视学算法获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 编辑:Sophia 计算机视觉联盟  报道  | 公众号 CVLianMeng 转载于 :机器之心 EfficientDe ...

  9. 全网第一SoTA成绩却朴实无华的PyTorch版EfficientDet

    点击上方"视学算法",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文作者:Zylo117 https://zhuanlan.zhih ...

  10. 364 页 PyTorch 版《动手学深度学习》PDF 开源了(全中文,支持 Jupyter 运行)

    点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 李沐,亚马逊 AI 主任科学家,名声在外!半年前,由李沐.Aston Zhang 等人合力打造 ...

最新文章

  1. 秋色园QBlog技术原理解析:Web之页面处理-内容填充(八)
  2. 『转』Photoshop中改进ios设计流程的30个诀窍
  3. CI/CD — Overview
  4. 资管机构年中规模排名出炉:中信资管规模超万亿
  5. python游戏编程入门 免费-python游戏编程入门 python游戏编程入门课
  6. php对表格的处理,JavaScript_js处理表格对table进行修饰,js处理表格 1、行颜色间隔显示 - phpStudy...
  7. stm32 isp下载官方软件android_OpenCanvas免费版下载_OpenCanvas绘图软件官方版下载7.0.25...
  8. 员工离职时被HR回复“猝死了再说”!HR道歉:没控制好情绪
  9. FPGA设计经验总结
  10. Windows Terminal Preview v0.4 发布,微软出品的全新终端
  11. 为什么要发明面向对象编程?
  12. java 查找素数_在Java中查找和检查素数
  13. 使用MAT (Memory Analyzer Tool)分析Andriod项目内存泄漏
  14. EPUB阅读工具-读者推荐
  15. Android周日历可滑动可选择日期
  16. opencv-python API 官网文档
  17. Java多线程编程-(17)-多线程异步调用之Future模式
  18. ios识别人脸自动拍照_ios人脸拍照识别
  19. 前端数据可视化之使用 canvas、svg、zrender画图
  20. 替换修改windows xp字体,为windows 7微软雅黑

热门文章

  1. Camera_Hal3_User_Manual
  2. 北航论文模板:解决XeLaTeX中Font shape'TU/SimSun(1)/b/n' undefined(font) using 'TU/SimSun(1)/m/n' instead
  3. PHP CI框架+VUE开发环境搭建,tnpm搭建VUE环境
  4. WPS Office 2019 For Linux 8372 个人版发布
  5. 直播系统app源码,简单实现颜色渐变
  6. HTML+JS实现页面跳转
  7. JTAG Pin脚定义及要求
  8. Lintcode-37 Python语言
  9. Gradle下载及安装以及Idea项目配置
  10. IIS7.0 Url Rewrite