Renascence架构

Renascence架构是 A-GP-B 式的桥梁架构,它要求下层库不直接对外提供接口,而是往GP库注册函数,上层库用GP公式间接调用下层库的代码。
GP库位于应用与lib库之间,作为应用调用lib库的桥梁而存在,它本身不依赖任何基础库。

上层调用

通过引入训练这一过程,应用跨平台的问题有了最好的解决方案,即在安装过程中,应用提供一个模板供平台训练,得到适合的实际运行的程序,然后应用在运行时用该程序就可以。
应用本身无须考虑平台问题,在任一平台下功能自动兼容、性能自动达到最优,而这是HTML5技术所做不到的。

训练

在应用安装/升级时,执行这一步骤

使用

在应用运行时,执行这一步骤,生成的ADF需要通过GP去执行(后续可能做相应优化,将ADF变成代码,生成一个新库)

训练过程的作用

1、允许自动化参数调节

写程序,尤其是算法类程序时,调参数是不可避免的事情,比如梯度下降中的学习速率,遗传算法中的变异比率、交叉比率,图像模糊算法中模糊半径。做代码优化时也会配置不少参数,如多线程优化中开启的线程数,开启多线程优化的阈值,使用OpenCL时device端缓存的大小,一次运算的globalsize, localsize,等等。
Renascence可提供一个框架,以公式链接起来的所有函数参数,会通过一个通一的方案调优。既然要调优,自然,优化的目标是什么,需要应用指定的:对优化而言,是时间的快慢;对预测而言,是准确率;对图像去噪而言,是与原图的信噪比。但如果是对于图像美化这种主观因素比较强的情形,没有什么比较好的评价函数,这时Renascence可提供一个枚举的机制,得出一系列参数——结果表,由人眼再去鉴别。

2、允许部分程序逻辑根据实际应用场景动态生成与调节

(1)类型自动匹配
如机器学习库中,对一批数据做K-Means聚类,模型输入的是矩阵(MATRIX),但数据可能源于是数据库(DATABASE),也可能是csv文件(CS >)
输入如下公式:KMeans(ADF(x0)),并在运行时指定x0的类型是DATABASE/CSV,Renascence便会去找能把DATABASE/CSV转化为矩阵MATRIX的函数,然后再与 KMeans 这个函数接起来。
(2)算法遍历寻优
如数据预测回归有 CART、线性回归等方法。写如下公式,可完成建模与预测:
Predict(ADF(x0), x1)
x0 为训练集,x1为测试集,这个公式中 ADF(x0)会对应翻译为某一种回归方法,在 OptInfo 中加入评价函数后,会去训练一个最优算法。

下层适配

下层lib库需要按GP的标准提供库函数,并且提供相应的库描述文件。

代码结构

对外接口

include/user 目录下为上下层的接口。
上层调用使用 GPAPI 中提供的函数,另外,一般而言需要使用GP公式。
下层适配使用IFunctionTable、GPContents等数据结构。

仿编译器架构

前端

公式——GPFunctionTree
GP的前端比较特别,它不仅是语法解析,还包括了遗传规划算法的自动逻辑生成。

中端

主要作子树去重优化。

后端

GPFunctionTree——ADF
将 GPFunctionTree转化为 ADF,目前主要是树形(无优化)、图形(带优化)和流式(允许间断输入)。

寻优算法

optimizor 下为相对独立的参数寻优算法,目前主要包括优选法(黄金618法)、网格法、粒子群算法(PSO)。其中优选法最快,但效果一般,网格法可以保证无遗漏,但极慢,粒子群算法为启发式算法,结果有一定随机性。
evolution下为遗传规划算法,用于优化函数结构。

Renascence架构简介相关推荐

  1. LoadRunner系统架构简介与运行原理

    1.LoadRunner系统架构简介 LoadRunner是通过创建虚拟用户来代替真实实际用户来操作客户端软件比如Internet Explorer,来向IIS.Apache等Web服务器发送HTTP ...

  2. 单线程与多线程网络程序架构简介

    文章目录 1 单线程与多线程网络程序架构简介 1.1 服务端单线程处理多客户端 1.2 服务端多进程多端口处理多客户端 1.3 服务端多线程单端口分组处理多客户端 1.4 服务端多线程多端口分组处理多 ...

  3. MVC架构简介及其测试策略

    MVC架构简介及其测试策略  https://www.cnblogs.com/rd-ddddd/p/6959232.html 转载于:https://www.cnblogs.com/highpoint ...

  4. Mysql逻辑架构简介

    Mysql逻辑架构简介 整体架构图 和其它数据库相比,MySQL有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用.主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务 ...

  5. mme 服务器位置,NB-IOT的网络架构简介

    原标题:NB-IOT的网络架构简介 一.NB-iot网络架构 整个NB-IoT网络架构分为五个部分:终端,无线网络,核心网络(EPC),IoT支持平台和应用服务器. 二.NB-iot网络架构简介 1. ...

  6. Xtensa处理器架构基础-架构简介与常见寄存器

    1.架构简介 应用的发展对处理器的需求越来越多样化.与通用处理器架构相比,Xtensa架构的特色在于它是可配置可扩展的微处理器架构.通俗地讲,将其与常见的ARM架构相比,Xtensa架构的特色在于可以 ...

  7. ARMv8-a架构简介

    1. 前言 ARMv8(当前只有A系列,即ARMv8-A)架构,是ARM公司为满足新需求而重新设计的一个架构,是近20年来,ARM架构变动最大的一次.它引入的Execution State.Excep ...

  8. a55计算机主板,A55架构简介与A55主板赏析

    A55架构简介与主板赏析: A55 FCH芯片架构 FCH芯片的角色大概相当于以往的南桥芯片,自身并没有整合显示核心,而是通过UMI接口(而不是HT总线)连接APU整合的显示核心进行输出.A55 FC ...

  9. Linux ALSA 之一:ALSA 架构简介

    一.概述 ALSA是 Advanced Linux Sound Architecture 的缩写,目前已经成为了linux的主流音频体系结构. 在 Linux 内核设备驱动层,ALSA 提供了 als ...

  10. 开源分布式数据库中间件MyCat架构简介(一)——基于MyCat的分库分表,读写分离,水平切分和垂直切分实现原理

    目录 前言 开源分布式数据库中间件MyCat架构简介--MyCat源起 一.数据库切分概述:OLTP和OLAP 二.关系型数据库和NoSQL数据库 三.关系型数据库和NoSQL数据库的特点及优缺点 1 ...

最新文章

  1. [C#基础知识系列]专题十二:迭代器
  2. matlab去除坏点,图像处理之坏点校正及源码实现
  3. SQVI和SAP查询QUERY的区别和使用注意事项
  4. java进阶08 GUI图形界面
  5. 我和ABP vNext 的故事
  6. 除了中国,原来还有这么多国家采用十二生肖的啊~| 今日最佳
  7. P4756-Added Sequence【斜率优化】
  8. 解决:“确实允许此网页访问剪贴板吗”
  9. 【宇宙探秘】物理角度分析,蚂蚁从万米高空掉下会摔死吗?
  10. ELK logstash的grok 自定义正则匹配日志
  11. 下载列表失败_Mac配置的Motrix,高速下载百度云
  12. 如何为文件夹添加图标
  13. android多个switch可,能刷安卓,任天堂 Switch 再跑个 Win10 如何?
  14. 小狗AI自动建站系统
  15. css样式单位px,em,pt,ex,pc,in,mm,cm详解
  16. 皮卡丘(pikachu) 文件上传
  17. L2-005 集合相似度(STL)
  18. JavaScript:利用JavaScript实现的功能、算法和奇淫技巧(持续更新)
  19. 服务器如何防御攻击?
  20. ActiViz学习点滴(五)——坐标变换

热门文章

  1. [系统] Linux Iptable (Log) 技巧和实例
  2. 新广告法违规词敏感词检测软件淘宝违规词检测查询工具软件
  3. java分布式日志组件
  4. 论文绘图——矢量图篇
  5. galgame安卓_史上最强教程!教你如何在安卓和ios上运行GALgame!
  6. php工具箱mysql启动不_解决php工具箱(phpStudy)Apache启动成功,MySql无法启动的问题...
  7. Python单例模式
  8. 东芝166打印机装驱动出现inf安装服务段落无效
  9. MATLAB linspace函数
  10. 淘宝/天猫直通车基本概念