高中时,很多同学听磁带,谈论共同的明星,稣听的全是一些没人唱的曲或者相对冷门的歌手唱的,于是乎同学都以为稣不追星……
这个误解好大!其实是稣惊讶地发现小小的一个耳机就可以替代所有歌星,歌星唱功再屌,它也可以播放,稣大胆预测将来 AI 可以代替任何人唱歌,所以稣追的星,其实是——耳机。
后来为了保护听力,改为扬声器了。
高中时,很多同学听磁带,谈论共同的明星,稣听的全是一些没人唱的曲或者相对冷门的歌手唱的,于是乎同学都以为稣不追星……
这个误解好大!其实是稣惊讶地发现小小的一个耳机就可以替代所有歌星,歌星唱功再屌,它也可以播放,稣大胆预测将来 AI 可以代替任何人唱歌,所以稣追的星,其实是——耳机。
后来为了保护听力,改为扬声器了。
跑步机可以控制时速,比如用 6KM/h 是比较适合稣的,而野跑则是变速运动,一不小心容易伤到膝盖。
可以在跑步机旁边放个空气净化器,而野跑容易吸尾气。
健身房有冷气,跑 40 分钟才有的流汗效果,在家不开空调只要 24 分钟,省时省钱。
健身房偶尔会有美女来约炮。——这问题很大,因为约炮也轮不到稣,会受刺激,伤心。
《#诗盗#·骚年游》:
算来好景只如斯,惟许有钱支。寻常装逼,等闲递笑,诚意吉祥意。
十年情了音尘断,往事不胜思。一狗惨叫,半脸肥鸡,总是咬人屎。
仕途茫然财路断,全家不够吃。一心补脑,半脸肥猪,总吃卵磷脂。
作者:那男性CEO开
《#诗盗#·缩减》:消费降级已两年,年年总是廿一天。观测完毕就不买,绝欲绝育要成仙。
《被房子掏空的中国人开始消费降级了》
观测 21 天后不买大法。
《#诗盗#·莫干》:莫干山上莫干湖,裸心谷里裸心鼓。为爱鼓掌湖与峰,淫酒赋诗只服稣。
湖与峰:双关语,和某学弟名字同音。
搞基军团去金门玩,建议他们——莫干。
《#诗盗#·槽倾池》:聊八卦,甩锅拍马屁,谣言何沉;乱吐槽,随手扔垃圾,牛皮为轻。
改编自霹雳角色“墨倾池”的诗号。
话九宸,挥袖风云尽,江山何沉,
随逸兴,负手乾坤定,苍黄为轻。
《人工神经网络训练方法——随机查找》介绍的随机查找方法,有点盲人摸象,所以继续介绍主流的后向传播(BackPropagation)算法。
先给随机查找做个优化!上篇中的激活函数统一使用 ReLU,其实这是不好的,输出层可以改为 Sigmoid 或 Tanh:
1 | inline double ActivationFunction_ReLU(double x) { |
原因很简单,我们已经知道 Xor 的结果不是 0 就是 1,用 ReLU 是可能大于 1 的,而 Sigmoid 和 Tanh 不会大于 1。
理论学习:《如何直观地解释 back propagation 算法?》
原理:求导
训练时,x 和 y 都是固定的,要求的是 a 和 b,所以问题是:当 y 偏离了 delta_y,求 a 和 b 应该修正多少?
分别对 a 和 b 求偏导,则:
1 | dy/da = x |
所以
1 | delta_a = delta_y / x |
代码不会骗人,来一个简化的例子:
1 | // BackPropagation.cpp |
《人工神经网络究竟是什么鬼?》中没有讲到如何训练神经网络,本篇延续用 XOR 运算为例,介绍一种随机查找的训练方式,主要原理是:随机初始化 w,计算错误率,在循环中,保存错误率小的 w,直到错误率小于等于 0.01 为止。
代码不会骗人,简单的实现如下:
1 | // TrainXor_RandomSearch.cpp |
效果主要看人品,可能跑个不停,也可能几乎立刻完成。一次运行结果:
1 | Randomize |
另一次:
1 | Randomize |
《#诗盗#·魖》:五味俱毒,七情皆苦。人生百态,尽归虚无。
平淡是真,平静是福。
某游戏在 RemoteFX 远程桌面下无法正常运行。提示:
运行引擎需要DX11特征等级10.0
英文版提示:
DX11 feature level 10.0 is required to run the engine.
稣立刻调用 dxdiag 查看,结果 Feature Level 10.0 是支持的!
然后决定自己写个 DX11 程序测试一下,于是找到这里例子:Tutorial 3: Initializing DirectX 11,稍加修改后运行,得到一个错误提示:
MessageBox(hwnd, L"Could not initialize Direct3D.“, L"Error”, MB_OK);
接下来,仔细检查这个初始化过程,发现居然是因为 wcstombs_s 失败引起的:
1 | // Convert the name of the video card to a character array and store it. |
原来是因为 RemoteFX 显卡的名字里有汉字……
RemoteFX 3D 视频适配器
设备名称:
Microsoft RemoteFX 图形设备 - WDDM
通过注册表改显卡名字,测试代码的问题解决!但 wcstombs_s 这块代码其实并无与显卡功能相关,去掉这段代码也可以解决问题。