首页 > 其他分享 >熵编码实现

熵编码实现

时间:2023-12-01 20:36:01浏览次数:27  
标签:编码 实现 self indexes medians ._ strings size

 1     def compress(self, x):
 2         y = self.g_a(x)
 3         y_strings = self.entropy_bottleneck.compress(y)
 4         return {"strings": [y_strings], "shape": y.size()[-2:]}
 5 
 6     def decompress(self, strings, shape):
 7         assert isinstance(strings, list) and len(strings) == 1
 8         y_hat = self.entropy_bottleneck.decompress(strings[0], shape)
 9         x_hat = self.g_s(y_hat).clamp_(0, 1)
10         return {"x_hat": x_hat}
class EntropyBottleneck(EntropyModel):

   def compress(self, x):
        indexes = self._build_indexes(x.size())
        medians = self._get_medians().detach()
        spatial_dims = len(x.size()) - 2
        medians = self._extend_ndims(medians, spatial_dims)
        medians = medians.expand(x.size(0), *([-1] * (spatial_dims + 1)))
        return super().compress(x, indexes, medians)

    def decompress(self, strings, size):
        output_size = (len(strings), self._quantized_cdf.size(0), *size)
        indexes = self._build_indexes(output_size).to(self._quantized_cdf.device)
        medians = self._extend_ndims(self._get_medians().detach(), len(size))
        medians = medians.expand(len(strings), *([-1] * (len(size) + 1)))
        return super().decompress(strings, indexes, medians.dtype, medians)

 

class _EntropyCoder:

底层代码中常用的是非对称数系编码区间编码 然后使用index进行编码/解码 将概率质量函数转换为量化的累积分布函数,并定义了一个占位符方法,鼓励在子类中提供具体实现。

class EntropyModel(nn.Module):

 

标签:编码,实现,self,indexes,medians,._,strings,size
From: https://www.cnblogs.com/CLGYPYJ/p/17870805.html

相关文章

  • Applescript实现无痕检测手机号或邮箱号是否注册iMessage服务,iMessage蓝号检测完美实
    一、检测数据的两种方式:1.人工筛选,将要验证的号码输出到文件中,以逗号分隔。再将文件中的号码粘贴到iMessage客户端的地址栏,iMessage客户端会自动逐个检验该号码是否为iMessage账号,检验速度视网速而定。红色表示不是iMessage账号,蓝色表示iMessage账号。2.编写脚本控制Macos/iphon......
  • 《信息安全系统设计与实现》学习笔记12
    《信息安全系统设计与实现》学习笔记12第十四章MySQL数据库系统MySQL简介MySQL(MySQL2018)是一个关系数据库系统(Codd1970)。在关系数据库中,数据存储在表中。每个表由多个行和列组成。表中的数据相互关联。表也可能与其他表有关联。关系结构使得可在表上运行查询来检索信息......
  • 第5次软工任务_实现与项目总结_10组虎纠吃游实评
    github源码链接:https://github.com/prettyKuromi/hujiu/tree/master微信小程序测试链接提供测试账号:demouser,密码:1231231,也可自行注册新账号(由于小程序类目个人开发者受限及无法通过认证,无法通过审核并发布小程序,扫码进入体验版后请点击右上角…,选择开发调试-打开调试,即可测试......
  • js实现树形结构
    letcityList=[ {id:1,parentId:0,name:'江苏省'}, {id:2,parentId:0,name:'广东省'}, {id:3,parentId:0,name:'安徽省'}, {id:4,parentId:1,name:'苏州市'}, {id:5,parentId:1,name:'无锡市'}, {id:6,parentId:......
  • 如何快速实现XML与JSON转换
    XML与JSON之间的转换常常用于以下场景:1.数据交换:当需要在不同的系统、平台或服务之间进行数据交换时,常常会使用XML或JSON进行数据的序列化和反序列化。比如,一个Web服务可能需要返回数据给一个移动应用,这时,数据就可以通过XML或JSON格式进行传输。2.数据存储:XML和JSON都常用于数据......
  • ESP32简单实现新版HC-SR04超声波模块(MicroPython+Thonny)
    一、新版HC-SR04简介新版HC-SR04,性能远超老版HC-SR04,US-015;在测距精度高于老版HC-SR04和US-015的情况下,测距范围更远,可达6米,远超一般超声波测距模块。采用CS-100A超声波测距SOC芯片,高性能,工业级,宽电压、低价格,成本击穿底价,只有普通超声波测距模块一半的价格,而性能远超普通超声波......
  • Flask实践--Flask蓝图实现各功能模块分离
    最近在尝试使用flask编写一个网站防篡改监测平台,写到后面发现各种模块工作都杂糅在一个py文件中,尝试用蓝图blueprint解决。比如单独写一个登出举例,新建logut.py:  app.py中: 前端; ......
  • 借助工业4G dtu实现对旧小区管网无线监测
    我国已历经数十年的城市化发展建设,当前城镇化率已达约65%。但伴随岁月的洗礼,城市里一些早年建设的老旧小区基础设施日益老化,尤其是水电气、卫生、消防、排水等管网系统,因设施老化,不仅导致功能性变差,还平添了各种安全隐患。  近年来,我国各地都在加快推进老旧小区的现代化升级......
  • Java继承与多态:实现代码复用与扩展的利器
    一、概述在Java编程语言中,继承和多态是两个非常重要的概念,它们是实现代码复用、扩展性和灵活性的关键。本文将详细介绍Java继承和多态的概念、实现方法以及注意事项,帮助您更好地理解和应用这两种技术。二、Java继承继承的概念Java继承是面向对象编程中的一个基本概念,它允许我们基于......
  • 数字化IT合同管理软件, 实现高效合同管理!
    在现代商业环境中,合同是商业活动中不可或缺的一部分。无论是与供应商、客户还是员工之间的合作,合同管理都是非常重要的。然而,传统的手动合同管理过程往往繁琐且易错,导致时间和资源的浪费,为了解决这些问题,合同管理软件应运而生。合同管理软件是一种专门设计用于自动化和优化合同管......