原创 從tensorflow的LazyLoader談python的importlib

從LayzerLoader 講起 python 的module 可以通過三種方式進行importing,分別是import, importlib.import_module(), __import__。 import 語句結合了兩

原创 tensorflow @tf.exports

tf.exports 的定義在 tensorflow.python.util.tf_export.py 主要是爲函數或者類增加新的__dict__ tf_export = functools.partial(api_export,

原创 C 利用宏求結構體成員的偏移值或者根據成員的地址求得結構體的地址

文章目錄定義一個宏求結構體內的成員的偏移值利用成員變量的地址求結構體的地址 C程序的時候,有時候需要根據結構體成員變量的地址,得到結構體的地址,特別是我們想用C來實現C++的繼承特性的時候。 結構體的地址表示: struct fa

原创 Bazel responsitory_rule 創建一個 rule

bazel respository_rule 主要功能是創建一個workspace 空間。對於package 內部的BUILD.tpl文件target 可以使用 responsity_ctx.file("//package") 創

原创 bazel 工具函數

Bazel 官方文檔 不管是寫WORKSPACE,BUILD、.bzl(主要是一些函數)或者其他文件,都要遵循一些Bazel的規則,有些規則是bazel內置的函數使用說明,有的規則是一些語法分析用到的。 例如: cc_librar

原创 使用TVM構建一個簡單的神經網絡框架(僅僅使用TVM的算子)

tvm 對神經網絡的算子、編譯和底層硬件進行了分塊抽象。 如何構建一個神經網絡框架呢? 下面我們用簡單的MLP分類網絡僅僅含有加法和乘法操作以及softmax。 y = softmax(Wx+b) 1.第一步構建計算圖和反向梯度計算圖

原创 Winograd 卷積計算

winograd的論文:https://arxiv.org/pdf/1509.09308.pdf [論文PPT] https://www.slideshare.net/embeddedvision/even-faster-cnns-ex

原创 svn 常用指令總結

1.在特定文件夾下查看修改svn 的歷史* svn log . | less 2.svn 比較兩個版本的不同: svn diff -r版本1:版本2 3.查看與某一個分之的不同: svn diff -r r版本號 4.將特

原创 類似gflag定義全局變量

#include <iostream> #include <map> #include <tuple> #include <sstream> template<class T> T get_from_env(const char

原创 參數值遞歸模版類

#include <iostream> #include <map> namespace teaflow { template<std::size_t...> struct seq{ void pint() { st

原创 打印文件名和文件行調試信息

#include <iostream> #include <map> #include <tuple> // #include "types.h" namespace teaflow { // 從 __FILE__ 找到文件的名

原创 KL 散度計算-python 例子

import numpy as np from scipy.stats import norm from matplotlib import pyplot as plt import tensorflow as tf impor

原创 winograd 卷積計算加速

論文:https://arxiv.org/pdf/1509.09308.pdf 論文PPT 參考騰訊開源的NNCN對winograd的實現,NCNN的開源地址。 一維F(2,3)實現代碼: # 論文地址 https://arxiv

原创 GPU program

文章目錄GPU與CPU的區別CPU與GPU存儲程序運行模型thread層面和內存層面簡單的GPU編程 參考華盛頓大學[Tianqi Chen的課件] http://dlsys.cs.washington.edu/pdf/lectu

原创 樸素貝葉斯(公式推導證明)

貝葉斯 Treatment 最大後驗估計 Maximum a Posterior Estimate(MAP) 參數的先驗: p0(q0j∣α1,α2)=Beta(α1,α2)=Γ(α1+α2)Γ(α1)Γ(α2)q0jα1−1(