layer

Unreal Virtual Texture 源码导读

空扰寡人 提交于 2020-08-10 17:20:38
上一篇 《浅谈Virtual Texture》 主要是对理论知识的介绍,本篇开始对Unreal Virtual Texture的源码做一个导读。 内容包括Virtual Texture的流程和一些技术实现细节,默认你已经对Virtual Texture有一定的认识,如对技术概念有疑惑,可以先看上篇。本文会先从整体出发,介绍Unreal实现的大概内容和流程,以及结构关系,然后再深入到细节,尽量还原Unreal的设计。 一、Unreal 实现的内容 首先,先给Unreal的Virtual Texture的实现给一个大体上的介绍。Unreal是基于Software Virtual Texture,并未涉及Hardware的内容,实现了Procedural Virtual Texture,Unreal叫Runtime Virtual Texture,并未实现Adaptive Procedural Texture。地址映射使用了indirection texture的page和MIP level的映射方式。Texture Filtering方面实现了Bi-linear Filtering、Anisotropic Filtering和Tri-linear Filtering,Bi-linear Filtering是基于border来实现的,Tri-linear

如何优雅地部署一个 Serverless Next.js 应用

我们两清 提交于 2020-08-10 17:14:05
上一篇 前端福音:Serverless 和 SSR 的天作之合 ,详细介绍了 SSR 相关知识,同时也提到了 Serverless 给 SSR 方案带来的福利。但它只是将 Next.js 应用部署到 Serverless 服务上而已,并不适合实际生产业务。为此本篇专门针对 Next.js 的 SSR 方案进行了探索和优化,一步一步带大家了解,如何基于 Serverless 架构部署一个实际的线上业务。 抢先体验: serverless-cnode 本文主要内容: 如何快速部署 Serverless Next.js 如何自定义 API 网关域名 如何通过 COS 托管静态资源 静态资源配置 CDN 基于 Layer 部署 node_modules 如何快速部署 Serverless Next.js 由于本人对 Serverless Framework 开发工具比较熟悉,并且长期参与相关开源工作,所以本文均使用 Serverless Components 方案进行部署,请在开始阅读本文之前,保证当前开发环境已经全局安装 serverless 命令行工具。 本文依然上一篇中介绍的 Next.js 组件 来帮助快速部署 Next.js 应用到腾讯云的 Serverless 服务上。 我们先快速初始化一个 Serverless Next.js 项目: $ serverless create

CTR预估模型演变及学习笔记

℡╲_俬逩灬. 提交于 2020-08-10 14:10:29
【说在前面】本人博客新手一枚,象牙塔的老白,职业场的小白。以下内容仅为个人见解,欢迎批评指正,不喜勿喷![握手][握手] 【再啰嗦一下】如果你对智能推荐感兴趣,欢迎先浏览我的另一篇随笔: 智能推荐算法演变及学习笔记 【最后再说一下】本文只对智能推荐算法中的CTR预估模型演变进行具体介绍! 一、传统CTR预估模型演变 1. LR 即逻辑回归。LR模型先求得各特征的加权和,再添加sigmoid函数。 使用各特征的加权和,是为了考虑不同特征的重要程度 使用sigmoid函数,是为了将值映射到 [0, 1] 区间 LR模型的优点在于: 易于并行化、模型简单、训练开销小 可解释性强、可拓展性强 LR模型的缺点在于: 只使用单一特征,无法利用高维信息,表达能力有限 特征工程需要耗费大量的精力 2. POLY2 POLY2对所有特征进行“暴力”组合(即两两交叉),并对所有的特征组合赋予了权重。 一定程度上解决了LR缺乏特征组合的问题,但是“暴力行为”带来了一些问题: 特征维度爆炸,特征数据过于稀疏,特征权重不易收敛 3. FM 相比于POLY2,FM为每个特征学习了一个隐权重向量 w。在特征交叉时,使用两个特征隐向量w的内积作为交叉特征的权重。 将原先n^2级别的权重数量降低到n*k(k为隐向量w的维度,n>>k),极大降低了训练开销。 4. FFM 在FM模型基础上,FFM模型引入了Field

YOLO V4的模型训练

非 Y 不嫁゛ 提交于 2020-08-10 12:50:34
1、YOLO V4模型训练的基本思路    所有机器学习涉及模型训练,一般都有训练集、验证集、测试集,因此需要准备数据集。有了数据集,再调用训练的算法,获取训练的结果。v3、v4模型训练方法相同。 2、YOLO V4模型训练的体验    利用已有数据,体验一下模型训练的各个步骤。    网址: https://pjreddie.com/darknet/yolo/ 给出了模型训练的方法。 2.1、YOLO模型训练的数据集格式    YOLO训练所要求的数据格式是PASCAL VOC或者COCO等标准数据集格式。    darknet\build\darknet\x64\data\voc目录下,有一个voc_label.py文件,用于数据转换。涉及的数据集的格式为PASCAL VOC格式。    关于PASCAL VOC格式的介绍,参见: 《PASCAL VOC数据集的标注格式》( https://zhuanlan.zhihu.com/p/33405410 ); 《计算机视觉标准数据集整理—PASCAL VOC数据集》( https://blog.csdn.net/xingwei_09/article/details/79142558 ); 《VOC 2007数据集结构》( https://blog.csdn.net/qq_38273984/article/details

第二次作业:卷积神经网络 part2

若如初见. 提交于 2020-08-10 08:49:23
Part Ⅰ 问题总结 1 如何理解卷积神经网络中的1*1卷积? 在学习MobileNetV2代码中,提到使用1 1实现降维和升维,有一点迷惑,就去查了查资料,发现1 1卷积核真是一个神奇的存在。它存在于各种结构中,比如:残差网络的Bootleneck残差模块里、GoogleNet的Inception模块里··· 当1 1卷积出现时,在大多数情况下它作用是升/降特征的维度,这里的维度指的是通道数(厚度),而不改变图片的宽和高。 同时,还会降低参数的数量,增加了网络的深度。 举个例子,h w 6的feature map,经过一个1 1的卷积核,变成了h w。有5个卷积核,输出就变成了h w*5,实现了降维的操作。升维也是一样的道理。 Part Ⅱ 代码练习 1 MobileNetV1 1.1 MobileNetV1概述 MobileNets基于一种流线型结构使用深度可分离卷积来构造轻型权重深度神经网络。MobileNetV1是一个有效的网络结构以及两组用于构建小型、低延迟模型的超参数,能在移动以及嵌入式视觉应用上轻易匹配设计要求。 1.2 MobileNetV1结构 1.2.1 深度可分离卷积 深度级可分离卷积其实是一种可分解卷积操作,其可以分解为两个更小的操作:depthwise convolution和pointwise convolution。 Depthwise

第二次作业:卷积神经网络 part 2

天涯浪子 提交于 2020-08-10 08:38:00
【第一部分】问题总结 创建MobileNet V2时,第二个基本单元的步长与论文中不一致: MobileNet V2中使用了BatchNorm来优化网络,归一化来加速网络,HybridSN中添加后分类结果变差。 【第二部分】代码练习 使用MobileNet V1对CIFAR10进行分类 可分离卷积的实现: class Block(nn.Module): '''Depthwise conv + Pointwise conv''' def __init__(self, in_planes, out_planes, stride=1): super(Block, self).__init__() # Depthwise 卷积,3*3 的卷积核,分为 in_planes,即各层单独进行卷积 # group这个参数是用做分组卷积的,但是现在用的比较多的是groups = in_channel # 当groups = in_channel时,是在做的depth-wise conv的 self.conv1 = nn.Conv2d(in_planes, in_planes, kernel_size=3, stride=stride, padding=1, groups=in_planes, bias=False) # 在卷积神经网络的卷积层之后总会添加BatchNorm2d进行数据的归一化处理

第二次作业:卷积神经网络 part 2

青春壹個敷衍的年華 提交于 2020-08-10 08:36:46
一、问题总结 在深度学习模型中,为什么每次训练的测试结果不同? 二、代码练习 1、MobileNetV1 #深度可分离卷积 class Block(nn.Module): def __init__(self, in_planes, out_planes, stride=1): super(Block, self).__init__() # Depthwise 卷积,3*3 的卷积核,分为 in_planes,即各层单独进行卷积 self.conv1 = nn.Conv2d(in_planes, in_planes, kernel_size=3, stride=stride, padding=1, groups=in_planes, bias=False) self.bn1 = nn.BatchNorm2d(in_planes) # Pointwise 卷积,1*1 的卷积核 self.conv2 = nn.Conv2d(in_planes, out_planes, kernel_size=1, stride=1, padding=0, bias=False) self.bn2 = nn.BatchNorm2d(out_planes) def forward(self, x): out = F.relu(self.bn1(self.conv1(x))) out = F.relu

HTTPS、SSL、TLS三者之间的联系和区别

こ雲淡風輕ζ 提交于 2020-08-10 06:58:32
SSL(Secure Socket Layer 安全套接层) 是基于HTTPS下的一个协议加密层,最初是由网景公司(Netscape)研发,后被IETF(The Internet Engineering Task Force - 互联网工程任务组)标准化后写入(RFCRequest For Comments 请求注释),RFC里包含了很多互联网技术的规范! 起初是因为HTTP在传输数据时使用的是明文(虽然说POST提交的数据时放在报体里看不到的,但是还是可以通过抓包工具窃取到)是不安全的,为了解决这一隐患网景公司推出了SSL安全套接字协议层,SSL是基于HTTP之下TCP之上的一个协议层,是基于HTTP标准并对TCP传输数据时进行加密,所以 HPPTS是HTTP+SSL/TCP的简称 。 由于HTTPS的推出受到了很多人的欢迎,在SSL更新到3.0时,IETF对SSL3.0进行了标准化,并添加了少数机制(但是几乎和SSL3.0无差异), 标准化后的IETF更名为TLS1.0(Transport Layer Security 安全传输层协议),可以说TLS就是SSL的新版本3.1 ,并同时发布“RFC2246-TLS加密协议详解”,如果想更深层次的了解TLS的工作原理可以去RFC的官方网站:www.rfc-editor.org,搜索RFC2246即可找到RFC文档! —

Linux高新能服务器编程笔记 -- Chapter1 TCP/IP协议栈

随声附和 提交于 2020-08-10 03:53:44
查看服务端口号 sudo cat /etc/services kali@kali:/etc$ sudo cat services # Network services, Internet style # # Note that it is presently the policy of IANA to assign a single well-known # port number for both TCP and UDP; hence, officially ports have two entries # even if the protocol doesn't support UDP operations. # # Updated from https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml . # # New ports will be added on request if they have been officially assigned # by IANA and used in the real-world or are needed by a debian package. # If you need a huge list of

tensorflow 2剪枝(tensorflow_model_optimization)API

时光总嘲笑我的痴心妄想 提交于 2020-08-10 02:16:01
找tf关于Pruning和quantization的用例较少,正好在做这方面工作,就搬一搬一些官方文档的应用。 下面的代码主要是结合一个官方Mnist的示例和guide文档看看tf的API中是怎么做pruning这一步优化的。 tensorflow/model-optimization--comprehensive_guide pruning_with_keras 总的思路是: 建baseline model → 加入剪枝操作→ 对比模型大小、acc等变化 其中关注其中如何自定义自己的pruning case和后续quantization等 目录 1.导入一些依赖库,后面似乎没用到tensorboard,暂时注释掉 2.导入Mnist数据集,作简单规整 3.建立一个Baseline模型,并保存权重,方便后续比较性能 4.对整个模型直接magnitude,建立剪枝模型,顺便看看模型前后变化 5.选定某个层进行magnitude(这里选择Dense layer),建立剪枝模型,看看模型变化 6.自定义剪枝操作 7.Tensorboard 可视化 8.保存模型 比较精度、模型大小 提高修剪模型的准确性Tips: Common mistake: import tempfile import os import zipfile import tensorflow as tf import