涉及 python, c, c++ 的基础编程知识,以及不同深度学习框架的小应用(主要集中在 keras,也有部分 tensorflow,caffe,pytorch)
未完待续,不断更新中
The Library of Python
【python】基本数据类型(1)
【python】基本运算和表达式(2)
【python】导入模块和输入输出(3)
【python】基本控制流程(4)
【python】list(5)
【python】tuple(6)
【python】dict(7)
【python】set(8)
【python】函数(9)
【python】异常处理(10)
【python】类(11)
【python】File(12)
【python】Regular Expression(13)
【python】Coding(Interview)
【python】Leetcode(Data Structure / Algorithm)
【python】Leetcode(Dynamic Programming)
【python】Leetcode(Map)
【python】Leetcode(primer)
【python】Single / Single Cycle / Double Link List
【python】Leetcode(String)
【python】Leetcode(Tree)
【python】Sort Algorithm
【python】axis
【python】Draw a straight line
【python】Linear Algebra(矩阵,向量)
【python】Linux终端没有GUI,如何使用matplotlib绘图
【python】matplotlib(上)
【python】matplotlib & seaborn(下)
【python】Multithreading (多线程)
【python】Neural Network for MNIST classification
【python】numpy & pandas
【python】OpenCV—RGB, Rectangle, Circle, SS(1)
【python】OpenCV—Blur, Threshold, Gradient, Morphology(2)
【python】OpenCV—Edge, Corner, Face Detection(3)
【python】Peppa Pig(turtle、if __name__ == ‘__main__’)
【python】PIL(上)
【python】PIL(下)
【python】random
【python】Scikit-learn中决策树可视化方法
【python】sympy
【python】Tkinter(GUI)
【python】Visualization of field data(NBA)
【python】Word Cloud(宇智波鼬,私密)
【NumPy】 中文文档
【Python】《零基础入门学python》Learning notes
【C】数据类型、运算符、表达式(1)
增强式学习,借助定义 Actions、States、Rewards 的方式不断训练机器循序渐进,学会执行某项任务的算法。常用算法有Q-Learning、TD(Temporal Difference)、Sarsa
总结的比较好的一个机器学习框架
主要从神经传导原理导入,以 Multilayer Perceptron (MLP) 为例
是我看过的比较销魂的神经网络模型
[ y 1 y 2 ] = a c t i v a t i o n ( [ x 1 x 2 x 3 ] × [ w 11 w 12 w 21 w 22 w 31 w 32 ] ) + [ b 1 b 2 ] \left [y1 \ y2 \right ]= activation\left ( \left [x1 \ x2 \ x3 \right ]\times \begin{bmatrix} w11 & w12\\ w21 & w22\\ w31 & w32 \end{bmatrix} \right )+\left [b1 \ b2 \right ] [y1 y2]=activation⎝⎛[x1 x2 x3]×⎣⎡w11w21w31w12w22w32⎦⎤⎠⎞+[b1 b2]
1×2 = 1×3 × 3×2 + 1×2
MNIST
train时,梯度更新,mini-batch,每次读取一批数据进行反向传播算法训练(多样本求均值)
损失函数
one-hot encoding
梯度更新过程
一个样本,算一次梯度,就有一个新的w1和w2。mini-batch,多个样本,多个w1和w2求均值。
可以跨平台使用,Raspberry Pi树莓派
具备分布式计算能力
前端语言,对 python 支持最好
高级 API,Keras、TF-Learn、TF-Slim、TF-Layer
1)Tensor(张量)
零维的 Tensor 是标量,1维的是向量,2维以上的是矩阵
2)Flow(数据流)
去陌生的城市,不会当地的语言,最好的方式,画一张图告诉司机你的目的地
computational graph
Node:代表运算(圆圈)
edge:张量的数据流
核心是computational graph
分为:建立 computational graph 和 建立 Session 执行 computational graph
Session(会话)的作用是在客户端和执行设备之间建立连接。有了这个连接,就可以将computational graph在各个不同的设备中执行,后续任何与设备之间的数据传输都必须通过Session来进行,并且最后获得执行后的结果。
tf.Variable() 构造函数需要变量的初始值,它可以是任何类型和形状的Tensor(张量)。 初始值定义变量的类型和形状。 施工后,变量的类型和形状是固定的。 该值可以使用其中一种赋值方式进行更改。
placeholder, 译为占位符,官方说法:”TensorFlow provides a placeholder operation that must be fed with data on execution.” 即必须在执行时feed值。
placeholder 实例通常用来为算法的实际输入值作占位符。例如,在MNIST例子中,定义输入和输出:
x = tf.placeholder(tf.float32, [None, 784])
#表示成员类型float32, [None, 784]是tensor的shape, None表示第一维是任意数量,784表示第二维是784维
y_ = tf.placeholder(tf.float32, [None, 10])
举个 y = s i g m o d ( W X + b ) y = sigmod(WX+b) y=sigmod(WX+b) 的例子
import tensorflow as tf
import numpy as np
W =tf.Variable(tf.random_normal([3,2]),name='w') #random_normal,从正态分布中输出随机值。
b =tf.Variable(tf.random_normal([3,2]),name='b')
X = tf.placeholder("float",[None,3],name='X')# placeholder,实例通常用来为算法的实际输入值作占位符
y = tf.nn.sigmoid(tf.matmul(X,W)+b,'y') #激活函数
with tf.Session() as sess:
init = tf.global_variables_initializer()
sess.run(init)
X_array = np.array([[0.4,0.2,0.4],
[0.3,0.4,0.5],
[0.3,-0.4,0.5]])
(_b,_W,_X,_y) = sess.run((b,W,X,y),feed_dict={X:X_array})
Keras是一个model-level的深度学习链接库,Keras必须配合backend engine 后端引擎(Theano、TensorFlow)进行计算(底层的Tensor计算)。
蛋糕架+加蛋糕
1)蛋糕架
model = Sequential()
2)加蛋糕
服务器上配置Tensorflow GPU版
本地远程访问Ubuntu16.04.3服务器上的Jupyter notebook
Ubuntu16.04.3服务器上opencv和caffe的配置
Jupyter更换主题和扩展包
本地远程访问Ubuntu16.04.3服务器上的TensorBoard
Linux learning notes
莫烦 PYTHON 教学视频(MLP、CNN、RNN for MNIST
classification,MLP、LSTM for regression)
Keras 建立 MLP、CNN 模型进行 MNIST
数据集手写数字分类
Keras 建立 MLP 模型预测泰坦尼克号
上的生存概率
Keras 建立 CNN 模型进行 CIFAR-10
数据集图像分类
Keras 建立 MLP、RNN、LSTM模型进行 IMDb
情感分析
Keras 建立 GAN 模型进行图像的生成
测试下矩阵运算GPU与CPU的差别
import tensorflow as tf
import time
默认用GPU跑
tf.reduce_sum
计算矩阵的和
#建立计算图
size=500
W = tf.random_normal([size, size],name='W') # 500,500
X = tf.random_normal([size, size],name='X') # 500,500
mul = tf.matmul(W, X,name='mul')
sum_result = tf.reduce_sum(mul,name='sum')# 矩阵内的值加总
# 执行计算图
with tf.Session() as sess:
result = sess.run(sum_result)
print('result=',result)
output
result= -10656.27
def performanceTest(device_name,size):
with tf.device(device_name):
W = tf.random_normal([size, size],name='W')
X = tf.random_normal([size, size],name='X')
mul = tf.matmul(W, X,name='mul')
sum_result = tf.reduce_sum(mul,name='sum')
startTime = time.time()
# 使用 tf.ConfigProto 建立 session 的配置设置 tfconfig,传入参数 log_device_placement设置为True
tfconfig=tf.ConfigProto(log_device_placement=True)
with tf.Session(config=tfconfig) as sess:
result = sess.run(sum_result)
takeTimes=time.time() - startTime
print(device_name," size=",size,"Time:",takeTimes )
return takeTimes
调用
gpu_set=[];cpu_set=[];i_set=[]
for i in range(0,5001,500):
g=performanceTest("/gpu:0",i) # 0号GPU
c=performanceTest("/cpu:0",i)
gpu_set.append(g);cpu_set.append(c);i_set.append(i)
print("--")
output
/gpu:0 size= 0 Time: 0.14670062065124512
/cpu:0 size= 0 Time: 0.16228890419006348
--
/gpu:0 size= 500 Time: 0.16929364204406738
/cpu:0 size= 500 Time: 0.18462872505187988
--
/gpu:0 size= 1000 Time: 0.13805508613586426
/cpu:0 size= 1000 Time: 0.13151001930236816
--
/gpu:0 size= 1500 Time: 0.1536424160003662
/cpu:0 size= 1500 Time: 0.2314302921295166
--
/gpu:0 size= 2000 Time: 0.21573805809020996
/cpu:0 size= 2000 Time: 0.4350099563598633
--
/gpu:0 size= 2500 Time: 0.37288379669189453
/cpu:0 size= 2500 Time: 0.6350183486938477
--
/gpu:0 size= 3000 Time: 0.5283641815185547
/cpu:0 size= 3000 Time: 0.9774112701416016
--
/gpu:0 size= 3500 Time: 0.7861192226409912
/cpu:0 size= 3500 Time: 1.4520719051361084
--
/gpu:0 size= 4000 Time: 1.1301662921905518
/cpu:0 size= 4000 Time: 2.030012845993042
--
/gpu:0 size= 4500 Time: 1.5385856628417969
/cpu:0 size= 4500 Time: 2.7173430919647217
--
/gpu:0 size= 5000 Time: 2.0486159324645996
/cpu:0 size= 5000 Time: 3.6564781665802
--
GPU的RAM不够就把size设置小一些,可视化一下结果
%matplotlib inline
import matplotlib.pyplot as plt
fig = plt.gcf()
fig.set_size_inches(6,4)
plt.plot(i_set, gpu_set, label = 'gpu')
plt.plot(i_set, cpu_set, label = 'cpu')
plt.legend()
参考
【1】TensorFlow中文社区
【2】tensorflow 生成随机数 tf.random_normal 和 tf.random_uniform 和 tf.truncated_normal 和 tf.random_shuffle
【3】TensorFlow函数——tf.variable( )
【4】tensorflow框架学习(一)placeholder 与variable
【5】 《TensorFlow+Keras深度学习人工智能实践应用》 林大贵
声明:第三章行文结构,拍摄图片均来源 《TensorFlow+Keras深度学习人工智能实践应用》 林大贵版,引用、转载请注明出处,如有兴趣,可以买一本看看,谢谢!