Survey of Federated Learning and Idea Evaluation
第一类是联邦学习开创者讲述联邦学习problem setting,以及几个常用的算法的文章,这类工作目前显然不能再做了,但需要阅读。
Federated Optimization: Distributed Optimization Beyond the Datacenter这篇文章是联邦学习的雏形,在2015年就被提交至arxiv上,所使用的算法与现版本有所区别,与之前的两个学习算法有相当大关联,SVRG与DANE.
SVRG全称为stochastic variance reduction gradient,主要的工作是对随机梯度下降做了一些修正,使得每一步的梯度估计方差更小,加快收敛速度,相关的工作可以追溯到2012的两篇文章。
DANE全称为Distributed Approximate NEwton,这是个分布式学习算法,主要工作是提出了一个近似类牛顿优化方法,并证明其在二次目标函数上拥有更快的收敛速度。
这篇文章所提出的联邦学习算法,实际可以看作用SVRG产生DANE所需解的估计,然后按照DANE的方式进行更新。
更进一步,在DANE这篇论文总结相关工作的部分,可以看到现在所广 ...
Wireshark配置Lua插件
版权声明:本文为 Jiawei Xu 于2019年4月28日所写,未经允许不得转载。
配置方法在wireshark的安装目录下面编辑init.lua文件,例如mac上:
1vim /Applications/Wireshark.app/Contents/Resources/share/wireshark/init.lua
最后一行如果没有加添加,否则修改:dofile("YOURFILEPATH.lua"),里面写绝对路径。
然后重启wireshark。
注:DATA_DIR表示全局配置路径,USER_DIR表示用户配置路径。可以通过菜单About Wireshark->Folders查看路径。
相关链接https://wiki.wireshark.org/Lua/
https://www.wireshark.org/docs/wsdg_html_chunked/wsluarm.html
深入理解xLua热更新原理
热更新简介热更新是指在不需要重新编译打包游戏的情况下,在线更新游戏中的一些非核心代码和资源,比如活动运营和打补丁。热更新分为资源热更新和代码热更新两种,代码热更新实际上也是把代码当成资源的一种热更新,但通常所说的热更新一般是指代码热更新。资源热更新主要通过AssetBundle来实现,在Unity编辑器内为游戏中所用到的资源指定AB包的名称和后缀,然后进行打包并上传服务器,待游戏运行时动态加载服务器上的AB资源包。代码热更新主要包括Lua热更新、ILRuntime热更新和C#直接反射热更新等。由于ILRuntime热更新还不成熟可能存在一些坑,而C#直接反射热更新又不支持IOS平台,因此目前大多采用更成熟的、没有平台限制的Lua热更新方案。
为什么需要热更新一般情况下,游戏开发并测试完后就要提交应用商店审核,其中苹果商店审核周期最长,审核通过后才能上线发布,这时玩家才能下载安装游戏。在如今快节奏的手游时代,游戏的生命周期大幅缩短而且更新还很频繁,如果每次游戏更新都要重新编译游戏打包,然后等待审核发布,最后用户再下载安装游戏,那玩家的耐性早没了。
而且游戏安装包还不能太大,不然玩家还没等 ...
luajava的錯誤信息輸出
最近在填新坑, 打算用lua作為腳本語言, 於是選擇了luajava來跑腳本.始終我對lua不熟, 錯誤是難免的了, 不料luajava居然沒有輸出錯誤信息orz(事實上連普通的輸出都沒找到, 反正我直接寫了個print函數…)既然找不到輸出, 那我只好想辦法把luajava的錯誤信息轉去調用自己寫的print了, 於是我想到了或許可以像Java中的try ... catch ...來攔住錯誤, 然後用 getStackTrace()之類的方法找到調用棧, 最後輸出.
順着這思路, 我找到了lua的xpcall(<fun:function>, <callback:function>)和debug.traceback([errMsg:string]), 前者接受一個函數和一個出現錯誤時的執行回調函數, 返回執行的成功與否和錯誤信息, 後者可選地接受一個錯誤信息, 並返回錯誤信息和調用棧.
那麼剩下的就是把程式本體塞到xpcall中, 這個倒沒多少難度:
xpcall(
-- $str是我傳入的程式本體
function() $str end,
-- e ...
Lua数据结构的实现
《Lua程序设计》笔记:高效地使用table来实现一些传统的数据结构
1 数组Lua库和长度操作符都遵循索引从1开始的约定。
2 多维数组123456789101112131415mt = {}for i=1, N do mt[i] = {} for j=1, M do mt[i][j] = 0 endend--合并索引(i*常量 + j)mt = {}for i=1, N do for j=1, M do mt[(i-1)*M+j] = 0 endend
3 链表、队列table是动态实体,所以实现链表很方便;实现队列的话,使用table库的insert、remove。1234567891011121314151617181920212223242526272829303132--主要是new/pushlast/popfirstList = {}function () return {first=0, last=-1}endfunction List.pushfirst(list, value) local f ...
Lua笔记
最近使用Lua过程中的一些笔记记录,零零散散的,主要有以下这么些内容:
版本兼容性处理常接触到的Lua版本有5.1、5.2和5.3,在Lua中可以通过_VERSION获取版本:
1234567if _VERSION == "Lua 5.3" then print("5.3")elseif _VERSION == "Lua 5.2" then print("5.2")elseif _VERSION == "Lua 5.1" then print("5.1")end
Lua5.1、5.2和5.3的一些常会遇到的API差异:
5.1->5.2
loadstring改为load
setfenv/getfenv 改为 _ENV
5.2->5.3
unpack改为 table.unpack
一种较为简单的兼容API差异的方法是增加类似这样的代码:
12load = load or loadstringunpack = unpack or table.unpack
pack ...
lua table只读
function read_only(inputTable)
local travelled_tables = {}
<span class="kd">local</span> <span class="k">function</span> <span class="nf">__read_only</span><span class="p">(</span><span class="n">tbl</span><span class="p">)</span>
<span class="k">if</span> <span class="ow">not</span> <span class= ...
基于Lua的State Pattern
代码来自于最近写的Pacman,更多请查看 – https://github.com/bennychen/Moai-based-Pacman
class.lua实现了在Lua中创建类的模拟,非常方便。class.lua参考自http://lua-users.org/wiki/SimpleLuaClasses
-- class.lua
-- Compatible with Lua 5.1 (not 5.0).
function class(base, init)
local c = {} -- a new class instance
if not init and type(base) == 'function' then
init = base
base = nil
elseif type(base) == 'table' then
-- our new class is a shallow copy of the base class!
for i,v in pairs(base) ...
lua语法
lua特性开源,轻量级,c语言编写实现,实现面向对象有点绕,执行效率高
lua开发环境
linux
123456789101112131415-- 下载lua包、解压wget -c http://www.lua.org/ftp/lua-5.3.0.tar.gztar zxvf lua-5.3.0.tar.gz-- 下载libreadline相关支持sudo apt-get install libreadline5sudo apt-get install libreadline-gplv2-dev-- 编译安装cd lua-5.3.0make linuxsudo make install-- 测试命令lua
windows
运行环境 LuaForWindows –> https://github.com/rjpcomputing/luaforwindows/releases
IDE pycharm –> https://blog.csdn.net/u012911347/article/details/82191541
基本语法
注释
12345--[[这是多行注释 ...
Lua学习笔记——时间和日期
思维导图首先我们看一张思维导图:
备注:
1. 纪元:一个固定日期,在 POSIX 和 Windows 平台中这个固定日期是 Jan 01, 1970, 00:00 UTC。
2. 日期表:在 lua 中表示时间的一种方式,这个表具有以下几个重要字段:year、month、day、hour、 min、sec、wday、yday、isdst。
wday:本周中的第几天(第一天是星期日)
yday:当年中的第几天
isdst:布尔类型。如果使用夏令时则为真。
例如:Sep 16,1998,23:48:10 用日期表的格式表示为:{year=1998, month=9, day=16, yday=259, wday=4, hour=23, min=48, sec=10, isdst=false}
日期表中各个参数的范围如下:(秒的最大范围是60,允许闰秒的存在。)
字段
范围
year
一整年
month
1~12
day
1~31
hour
0~23
min
0~59
sec
0~60
wday
1~7
yday
1~36 ...