原创 Cache Blocking

背景 提高緩存命中率的一個重要技巧是Blocking,數據塊將逐塊計算,使得存儲器訪問是一個具有高內存局部性的小鄰域。 通過在緩存中使用/重用這些數據,我們減少了進入內存的需求(減少內存帶寬壓力)。 Blocking避免了應用程序

原创 打印隨機森林模型預測樣本的決策路徑

背景 通過打印樹模型對測試樣本的決策路徑,實現樹模型對預測樣本的可解釋性。 實現 import numpy as np from sklearn.model_selection import train_test_split f

原创 理解解釋器中的JIT機制

原始代碼 long add4(long num) { return num + 4; } JIT代碼 0x48, 0x89, 0xf8, // mov %rdi, %rax 0x48, 0

原创 信息論(信息熵、KL散度、交叉熵以及互信息)

信息論是一門用數理統計方法來研究信息的度量、傳遞和變換規律的科學。 它主要是研究通訊和控制系統中普遍存在着信息傳遞的共同規律以及研究最佳解決信息的獲限、度量、變換、儲存和傳遞等問題的基礎理論。 這似乎與概率論和機器學習的關注點相去

原创 基於PyTorch的風格遷移

from __future__ import print_function from __future__ import division from torchvision import models from torchvis

原创 卷積神經網絡中特徵圖大小的計算

輸入圖片大小 Hprev×WprevH_{prev}×W_{prev}Hprev​×Wprev​ Filter大小 f×ff×ff×f 步長 stridestridestride 填充的像素數 padpadpad 卷積: n

原创 強化學習介紹(RL)

一、簡介 機器學習有三大分支,監督學習、無監督學習和強化學習,強化學習是系統從環境學習以使得獎勵最大的機器學習。**人工智能中稱之爲強化學習,在控制論中被稱之爲動態規劃,兩者在概念上是等價的。**也被翻譯爲增強學習。 二、概念

原创 利用C++調用PyTorch的模型

背景 PyTorch的主要接口是Python語言。雖然Python是許多需要動態和易於迭代的場景的首選語言,但同樣有很多情況下,Python的這些屬性恰好是不利的。在生產環境中,需要保證低延遲和其它嚴格的要求,而對於生產場景,C

原创 時序數據的預測問題

過去的數據進行模型訓練,使用將來的數據進行測試; 當前的狀態只會影響將來,而不會影響過去。

原创 CPU Cache

局部性原理 程序的運行存在時間和空間上的局部性,前者是指只要內存中的值被換入緩存,今後一段時間內會被多次引用,後者是指該內存附近的值也被換入緩存。 如果在編程中特別注意運用局部性原理,就會獲得性能上的回報。 Cache Cache

原创 使用Flex&Bison創建新的編程語言

編譯器基本流程 Flex&Bison簡介 Flex是一個詞法分析器(lexer),是Unix lex的GNU克隆,作用是把"詞"抽象成符號(token),供程序識別。 Bison則是一個語法解析器(parser),也是Unix

原创 打印隨機森林模型預測樣本的路徑

import numpy as np from sklearn.model_selection import train_test_split from sklearn.datasets import make_classifi

原创 NCNN模型部署

自定義項目的CMake配置 # 最低CMake版本要求 cmake_minimum_required(VERSION 3.14.5) # 項目名稱 project(NCNN_TEST) # 查找OpenCV find_packa

原创 TVM簡介

TVM與LLVM的架構非常相似。TVM針對不同的深度學習框架和硬件平臺,實現了統一的軟件棧,以儘可能高效的方式,將不同框架下的深度學習模型部署到硬件平臺上。 TVM軟件棧 工作流程 從已有的深度學習框架中獲取一個模型並將此模型

原创 k-means

簡介 K-均值算法的基本思想是首先從含有N個數據對象的數據集中隨機選擇K個數據對象作爲初始中心,然後計算每個數據對象到各中心的距離,根據最近鄰原則,所有數據對象將會被劃分到離它最近的那個中心所代表的簇中,接着分別計算新生成的各個簇