Referrence
Tensorflow常用函数说明
Tensorflow入门教程合集
图解TensorFlow
TensorFlow博客资源
Tensorflow学习资料
Reference
TensorFlow入门教程之0: BigPicture&极速入门
TensorFlow入门教程之1: 基本概念以及理解
TensorFlow入门教程之2: 安装和使用
TensorFlow入门教程之3: CNN卷积神经网络的基本定义理解
TensorFlow入门教程之4: 实现一个自创的CNN卷积神经网络
TensorFlow入门教程之5: TensorBoard面板可视化管理
TensorFlow入门教程之6: AlphaGo 的策略网络(CNN)简单的实现
TensorFlow入门教程之7: 训练的模型Model 保存 文件 并使用
TensorFlow入门教程之8: DNN深度神经网络 的原理 以及 使用
TensorFlow入门教程之9: 接着补充一章MLP多层感知器网络原理以及 使用
TensorFlow入门教程之10: RNN循环网络原理以及使用
TensorFlow入门教程之11: 使用TensorFlow实现RNN
TensorFlow入门教程之12: 最强网络RSNN深度残差网络 平均准确率96-99%
TensorFlow入门教程之13: 最强网络DLSTM 双向长短期记忆网络(阿里小AI实现)
TensorFlow入门教程之14: Tensorflow Caffe相互转换
TensorFlow入门教程之15: Tensorflow RCNN区域卷积神经网络
Tensorflow入门教程之16: 模型AutoEncoder自编码机网络
Tensorflow入门教程之17: Tensorflow人工智能分布式实现
查看TensorFlow版本:
import tensorflow as tf
tf.version
tf.path
查看Linux版本
cat /etc/issue
cat /proc/version
tensorflow自学之前的bigpicture
1、tf.contrib.learn,tf.contrib.slim,Keras 等,它们都提供了高层封装
2、计算图:有向无环图
3、相关概念
Tensor:类型化的多维数组,图的边;
Operation:执行计算的单元,图的节点;
Graph:一张有边与点的图,其表示了需要进行计算的任务;
Session:称之为会话的上下文,用于执行图。
Graph仅仅定义了所有 operation 与 tensor 流向,没有进行任何计算。而session根据 graph 的定义分配资源,计算 operation,得出结果。既然是图就会有点与边,在图计算中 operation 就是点而 tensor 就是边。Operation 可以是加减乘除等数学运算,也可以是各种各样的优化算法。每个 operation 都会有零个或多个输入,零个或多个输出。 tensor 就是其输入与输出,其可以表示一维二维多维向量或者常量。而且除了Variables指向的 tensor 外所有的 tensor 在流入下一个节点后都不再保存。
4、数据结构
rank:Rank一般是指数据的维度,其与线性代数中的rank不是一个概念
Shape:Shape指tensor每个维度数据的个数,可以用python的list/tuple表示。
data type:Data type,是指单个数据的类型。常用DT_FLOAT,也就是32位的浮点数。
5、Variables
5.1、介绍
当训练模型时,需要使用Variables保存与更新参数。Variables会保存在内存当中,所有tensor一旦拥有Variables的指向就不会在session中丢失。其必须明确的初始化而且可以通过Saver保存到磁盘上。Variables可以通过Variables初始化。
5.2初始化
实际在其初始化过程中做了很多的操作,比如初始化空间,赋初值(等价于tf.assign),并把Variable添加到graph中等操作。
5.3Variables与constant的区别
Constant一般是常量,可以被赋值给Variables,constant保存在graph中,如果graph重复载入那么constant也会重复载入,其非常浪费资源,如非必要尽量不使用其保存大量数据。
5.4命名
另外一个值得注意的地方是尽量每一个变量都明确的命名,这样易于管理命令空间,而且在导入模型的时候不会造成不同模型之间的命名冲突,这样就可以在一张graph中容纳很多个模型。
6、placeholders与feed_dict
当我们定义一张graph时,有时候并不知道需要计算的值,比如模型的输入数据,其只有在训练与预测时才会有值。这时就需要placeholder与feed_dict的帮助。
基本概念以及理解
https://my.oschina.net/yilian/blog/659618
安装和使用
http://blog.csdn.net/kkk584520/article/details/51476816
CNN卷积神经网络的基本定义理解
|
|
eg:
常用函数:
实现一个自创的CNN卷积神经网络
TensorBoard面板可视化管理
https://www.tensorflow.org/versions/r0.8/how_tos/summaries_and_tensorboard/index.html
tensorflow 网络可视化
|
|
4D数据虚拟化
|
|
图标变化方式展示tensorflow数据特征
|
|
以变量批次事件变化的线路图显示表示tensorflow数据
|
|
汇总
|
|
AlphaGo 的策略网络(CNN)简单的实现
训练的模型Model保存文件并使用
|
|
DNN深度神经网络的原理以及使用
DNN ,就是去掉卷积层之后 使用全连接层+dropout下降+relu激活 一层一层的WX+B的 网络模式
接着补充一章MLP多层感知器网络原理以及使用
linear----线性感知器
tanh----双曲正切函数
sigmoid----双曲函数
softmax----1/(e(net) * e(wi*xi- shift))
log-softmax---- log(1/(e(net) * e(wi*xi)))
exp----指数函数
softplus----log(1+ e(wi*xi))
RNN循环网络原理以及使用
|
|
eg:
使用TensorFlow实现RNN
RNN实现
tensorflow.Python.ops.rnn_cell
类型判断:
isinstance
rnn_cell中的函数:
def _linear(args, output_size, bias, bias_start=0.0, scope=None):
args: list of tensor [batch_size, size]. 注意,list中的每个tensor的size 并不需要一定相同,但batch_size要保证一样.
output_size : 一个整数
bias: bool型, True表示 加bias,False表示不加
return : [batch_size, output_size]
注意: 这个函数的atgs 不能是 _ref 类型(tf_getvariable(), tf.Variables()返回的都是 _ref),
但这个 _ref类型经过任何op之后,_ref就会消失
class BasicLSTMCell(RNNCell):
def init(self, num_units, forget_bias=1.0, input_size=None,
state_is_tuple=True, activation=tanh):
“””
为什么被称为 Basic
It does not allow cell clipping, a projection layer, and does not
use peep-hole connections: it is the basic baseline.
“””
num_units: lstm单元的output_size
input_size: 这个参数没必要输入, 官方说马上也要禁用了
state_is_tuple: True的话, (c_state,h_state)作为tuple返回
activation: 激活函数
注意: 在我们创建 cell=BasicLSTMCell(…) 的时候, 只是初始化了cell的一些基本参数值. 这时,是没有variable被创建的, variable在我们 cell(input, state)时才会被创建, 下面所有的类都是这样
class GRUCell(RNNCell):
def __init__(self, num_units, input_size=None, activation=tanh):
创建一个GRUCell
class OutputProjectionWrapper(RNNCell):
def __init__(self, cell, output_size):
output_size: 要映射的 size
return: 返回一个 带有 OutputProjection Layer的 cell(s)
class InputProjectionWrapper(RNNCell):
def __init__(self, cell, num_proj, input_size=None):
和上面差不多,一个输出映射,一个输入映射
class DropoutWrapper(RNNCell):
def __init__(self, cell, input_keep_prob=1.0, output_keep_prob=1.0,
seed=None):
dropout
class EmbeddingWrapper(RNNCell):
def __init__(self, cell, embedding_classes, embedding_size, initializer=None):
返回一个带有 embedding 的cell
class MultiRNNCell(RNNCell):
def __init__(self, cells, state_is_tuple=True):
用来增加 rnn 的层数
cells : list of cell
返回一个多层的cell
class tf.contrib.rnn.BasicLSTMCell
最强网络RSNN深度残差网络 平均准确率96-99%
论文:图像识别的深度残差学习 Deep Residual Learning for Image Recognition
待完善
最强网络DLSTM 双向长短期记忆网络(阿里小AI实现)
并没有给出阿里小AI的完整实现
|
|
Tensorflow Caffe相互转换
开源项目: https://github.com/ethereon/caffe-tensorflow
./convert.py /root/googleNet.prototxt --code-output-path=googleNetTensorflow.py
Tensorflow RCNN区域卷积神经网络
模型AutoEncoder自编码机网络
AutoEncoder 用于 有监督里面 可以用来 数据压缩 数据降维 过滤 降噪
AutoEncoder用于 无监督算法 里面可以用来进行 数据的转换 数据的自学习
Tensorflow人工智能分布式实现
- 采用spark 的RDD 结合 map 在 map里面执行每一层 每一层 FF BP 采用 broardCast传播全局变量 也就是计算的梯度 来接着 map里面进行 更新梯度操作
- spark 的mllib包
- PipeLine管道 ,mlib机器学习的 ml管道方式
- 分布式数据库 分布式调度
Tensorflow实战
《TensorFlow实战》这本书的主要内容:
- 使用数据流式图规划计算流程
- 多个设备时:
每一个节点该让什么硬件设备执行–设计了一套策略,首先需要计算代价模型。
如何管理节点间的数据通信–子图之间的发送节点和接受节点 TCP或者RDMA - tf.device(“/gpu:%d”%d) 从一块GPU到多块的代码
- 支持自动求导[db,dW,dx]=tf.gradients(C,[b,W,x])
- 反向传播时可能需要初始Tensor,会占用内存。持续改进中
- 用户可以选择计算图的任意子图,节点名+port的形式
- 计算图的控制流:if-condition while-loop
- 接收节点在刚好需要数据的时候才开始接收数据
- receive,enqueue,dequeue异步的实现
- 加速:数据并行,模型并行,流水线并行
- Python等接口是通过SWIG实现的
- 兼容Scikit-learn estimator接口
- 计算图必须构建为静态图,beam search变得困难
- 不同设备间通信使用基于socket的RPC
- Tensorflow Serving
- tf.variables中的参数是持久化的
- tf.cast(correct_prediction,tf.float32)# 类型转换
- accuracy.eval(feedict)
- xavier initialization 初始化参数
- tf.truncated_normal([in_units,h1_units]) #截断的正态分布
- tf.nn.lrn对局部神经元的活动创建竞争环境,使得其中响应比较大的值变得相对更大
- tf.train.start_queue_runners()#启动线程进行加速
- tf.random_uniform((fan_in,fan_out),minval=low,maxval=high,dtype=tf.float32)#均匀分布
- tf.truncated_normal([in_units,h1_units],stddev=0.1)#截断的正态分布,标准差为0.1
- tf.nn.in_top_k(logits,label_holder,1)#输出结果中topk的准确率
- withtf.namescope(‘conv1’) as scope可以将scope内生成的Variable自动命名为conv1/name
- tf.nn.nce_loss()Noise-contrastive Estimation
- ,a 中只是一个占位的作用
-