1. 背景
tensorflow是一套可以通过训练数据的计算结果来反馈修改模型参数的一套框架,由谷歌公司于2015年11月开源,地址点击这里。
建议使用python 3.X运行tensorflow,使用:
pip install tensorflow
即可安装使用。
2. 运行步骤
定义模型,包括参数、预测函数、损失函数、优化函数:例如
A = tf.Variable(rf.random_normal(shape = [1,1]))
b = tf.Variable(rf.random_normal(shape = [1,1]))
def pred(x):
output = tf.add(tf.mul(x, A), b)
return output
def loss(x, y):
loss = tf.reduce_mean(tf.square(y – pred(x)))
return loss
def opt(loss)
learningRate = 0.001
opt = tf.train.GradientDescentOptimizer(learningRate)
trainingStep = opt.minimize(loss)
return trainingStep
新建Session,使用数据训练模型:
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
#接下来是常见的训练手法:
#1. 定义训练集和测试集,并正则化
[sourceData] = ...
data = tf.nn.batch_norm_with_global_normalization([sourceData])
#2. 按照批次随机选取训练数据
[x_train_data] = ...
[x_evaluate_data] = ...
[y_train_data] = ...
[y_evaluate_data] = ...
#3. 定义训练图,定义迭代条件
x_input = tf.placeholder(tf.float32, [None, input_size])
y_target = tf.placeholder(tf.float32, [None, input_size])
train_opt = opt(loss(x_input,y_target))
for [stop rule]:
#4. 给训练图喂数据,优化器会根据placeholder传入的值优化variable的值。
sess.run(loss,feed_dict={x_input:x_train_data,y_target:y_train_data})
#5. 每隔一定迭代次数将损失和计算值保存下来,并绘制图
从下图可以看出tensorflow的流程:训练数据从placeholder进入训练图,通过pred计算出output,然后通过loss计算损失函数,然后通过opt调整variable的值。迭代这个过程直至满足一定的条件。
3. 使用方式
tensor(张量)中的基本数据有三种定义方式,即:python原生类型;TF数据类型;更常见的做法是借助NumPy数组定义Tensor对象。基于tensor可以定义variable,注意variable是需要initialize的。
v_1 = tf.Variable(tf.truncated_normal(np.array([2,2],dtype = np.int32)))
v_2 = tf.Variable(np.array(50,dtype = np.int32))
v_2 = v_np.assign_add(3)#简单自增
graph(计算图)的定义和使用方式如下:
g = tf.Graph()
with g.as_default()
...
Session(会话)的定义和使用方式如下:
with tf.Session() as sess:
merged = tf.summary.merge_all()
writer = tf.summary.FileWriter("/tmp/variable_logs", graph=g)
#随后可以使用tensorboard --logdir=/tmp 启动tensorboard
4. 函数与更新
函数可以参见https://www.cnblogs.com/focusonepoint/p/7544369.html
函数更新参见https://blog.csdn.net/xxzhangx/article/details/58005846。
实践中遇到的主要更新包括:变量初始化的tf.initialize_all_variables变为tf.global_variables_initializer,summary相关的都放入了一个包中,所以XX_summary都变为了summary.XX,数学函数sub、mul等被补全为substract、multiply等。
5. 资源
Official Resources:
- TensorFlow Python API
- TensorFlow on Github
- TensorFlow Tutorials
- Udacity Deep Learning Class
- TensorFlow Playground
Github Tutorials and Examples:
Deep Learning Resources
- Efficient Back Prop by Yann LeCun, et. al.
- Online Deep Learning Book, MIT Press
- An Overview of Gradient Descent Algorithms by Sebastian Ruder
- Stochastic Optimization by John Duchi, et. al.
- ADADELTA Method by Matthew Zeiler
- A Friendly Introduction to Cross-Entropy Loss by Rob DiPietro