Tensorflow的学习笔记--常用方法和代码片段
今天整理下学习的tensorflow的几个常用的方法和代码片段.
tf.get_collection("")
从集合中取出全部变量,生成一个列表tf.add_n([])
列表内对应元素相加tf.cast(x,dtype)
把x转为dtype类型tf.argmax(x,axis)
返回最大值所在索引号,如 tf.argmax([0,1,0]) 返回2with tf.Graph().as_default() as g:
其内定义的节点在计算图g中保存模型:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16saver=tf.train.Saver()# 实例化saver对象
with tf.Session() as sess: # 在with结构的for循环一定轮数是,保存模型到当前会话
for i in range(STEPS):
if i%轮数 ==0:
saver.save(sess,os.path.join(""),global_step=global_step)
```
7. 加载模型
``` python
with tf.Session() as sess:
ckpt=tf.train.get_checkpoint_path
if ckpt and ckpt.model_checkpoint_path:
saver.restore(sess,ckpt.model_checkpoint_path)反向传播均方误差和减少loss
1
2
3
4
5loss=tf.reduce_mean(tf.square(y_-y))
# 三个减少loss的训练方法
train_step=tf.train.GradientDescentOptimizer(learnig_rate).minimize(loss)
train_step=tf.train.MomentumOptimizer(learnig_rate,momentum).minimize(loss)
train_step=tf.train.AdamOptimizer(learnig_rate).minimize(loss)损失函数
1
2
3
4
5
6
7# tf.nn.relu #未找到使用地方
# tf.nn.sigmoid #未找到使用地方
# tf.nn.tanh #未找到使用地方
loss=tf.reduce_sum(tf.where(tf.greater(y,y_),COST(y-y_),PROFIT(y_-y))) #自定义损失函数
ce=tf.nn.sparse_softmax_cross_entropy_with_logits(logtis=y,labels=tf.argmax(y_,1))#交叉熵
cem=tf.reduce_mean(ce)#交叉熵学习率计算
1
2
3
4
5
# 指数衰减学习率
global_step=tf.Variable(0,trainable=False)
learning_rate=tf.train.exponential_decay(LEARNINF_RATE_BASE,global_step,LEARNINF_RATE_STEP,LEARNINF_RATE_DECAY,staircase=True)
滑动平均
1
2
3
4
5
6
7
8
9
10ema=tf.train.ExponentialMovingAverage(衰减率MOVING_AVERAGE_DECAY,当前轮数global_step)
ema_op=ema.apply([])
ema_op=ema.apply(tf.trainable_variables()) # 每运行此据,所有待优化的参数求滑动平均
with tf.control_dependencies([train_step,ema_op]):
train_op=tf.no_op(name='train')
ema.average(查看参数的滑动平均)正则化
1
2
3
4
5
6loss(w)=tf.contrib.layers.l1_regularizer(REGULARIZER)(w) #w加和
loss(w)=tf.contrib.layers.l2_regularizer(REGULARIZER)(w) # w平方加和
tf.add_to_collection('losses',tf.contrib.layers.l2_regularizer(regularizer)(w))
loss=cem+tf.add_n(tf.get_collection('losses'))实例化可还原滑动平均值的saver
1
2
3ema=tf.train.ExponentialMovingAverage(滑动平均数)
ema_restore=ema.variable_to_restore()
saver=tf.train.Saver(ema_restore)准确率计算方法
1
2correct_prediction=tf.equal(tf.argmax(y,1),tf.argmax(y_,1))
accuracy=tf.reduce_mean(tf.cast(correct_prediction,tf.float32))