目录:
1. tf.placeholder_with_default(tf.constant(1.0),shape=[],name='use_dropout') # 设置一个占位符
2. tf.constant(input, size, name) # 产生一个变量
3.tf.variable_scope(name, reuse=True) # 设置函数的作用范围
4.tf.get_variable(name, shape) # 设置函数变量
5.tf.nn.conv2d(i, k, [1, sw, sh, 1], padding=padding) # 进行二维卷积操作
6.tf.nn.bias_add(input, bias) # 进行偏置项的相加
7.tf.nn.relu(input, name=scope_name) # 进行relu激活
8.tf.nn.atrous_conv2d(i, k, dilation, padding=padding) # 进行膨胀卷积操作
9.tf.nn.max_pool(input, ksize=[1, 2, 2, 1], stride=[1, 2, 2, 1], name=name, padding=padding) # 进行最大池化
10 tf.nn.avege_pool(input, ksize=[1, 2, 2, 1], stride=[1, 2, 2, 1], name=name., padding=padding) # 进行平均池化
11. tf.nn.local_response_normalization(input,depth_radius=radius,alpha=alpha, beta=beta, bias=bias,name=name) # 进行局部相应归一化操作
12 tf..add_n(input, name=name) # 进行逐像素相加
13.tf.nn.layer_relu(feed_in, weight, bias, name) # 通过relu进行直接的相加操作
14.tf.nn.xw_plus_b(feed_in, weights, biases, name) # 不添加relu层操作的weights和biases操作
15. tf.nn.softmax(input, name) # 将数值转换为0, 1的概率值
16.tf.contrib.layer.batch_norm(input,activation_fn=activation_fn,is_training=is_training,updates_collections=None,scale=scale,scope=scope) # 进行归一化操作
17. tf.nn.dropout(input, keep, name=name) # dropout反过拟合
18.tf.set_random_seed(args.random_seed) # 设置随机种子
19.tf.train.Coordinator( ) # 构建队列协调器
20. tf.global_variables() # 获得全局的训练参数
21 tf.trainable_variables() # 获得当前训练的训练参数
22. .tf.nn.sparse_softmax_cross_entropy_with_logits(logist=logist, label=label) # 交叉熵损失函数
23. tf.nn.l2_loss(v) # 进行l2_loss的正则化操作
24.tf.scalar_mul() # 进行浮点数的相乘操作
25. tf.train.MomentumOptimizer(learning_rate, args.momentum) # 定义动量梯度下降优化器
26 tf.gradients(reduced_loss, conv_trainable + fc_w_trainable + fc_b_trainable) # 获得梯度下降过程中的梯度值
27 tf.global_variables_initializer() # 进行权重初始化
28. tf.train.start_queue_runners(coord=coord, sess=sess) # 开启队列线程, coord表示队列协调器
29.tf.image.decode_jpeg # 进行图片解析
30. tf.convert_to_tensor # 将图片转换为tensor可以接受的格式
31 tf.train.slice_input_producer # 构建随机队列
32. tf.train.batch, tf.train.shuffle.batch # tf.train.batch 按顺序获取,tf.train.shuffle_batch 随机获取
33. tf.image.resize_nearest_neighbor(input_batch, new_size) # 进行图片的维度变化,插值方法使用最近邻插值
34. tf.image.resize(input_batch, new_size, method) # 进行图片的维度变化,插值方法可以由多种,线性,双线性
35 tf.one_hot(input_batch, depth=num_classes) # 进行独热编码, depth表示的是维度
36 tf.reverse(img, axis) # 对图片进行翻转
37 tf.random_crop(img, [h, w, 3]) # 对图片进行随机的裁剪
38 tf.image.pad_to_bounding_box(combined, 0, 0, tf.maximum(crop_h, image_shape[0]), tf.maximum(crop_w, image_shape[1])) # 进行矩阵的补零操作
39 tf.TFRecordReader() # 构建读取器
40 tf.random_uniform_initializer(min, max) # 随机标准差初始化
41 tf.image.convert_image_dtype(image, dtype=tf.float32) # 对图片进行类型转换
42 tf.image.resize_image_with_crop_or_pad(image, height, width) # 如果图片的维度大于height和width进行裁剪操作,否者进行补零操作
43. tf.image.random_flip_left_right(image) # 以一定的概率进行从左到右的翻转操作
44. tf.image.random_brightness(image, max_delta=32. / 255.) # 进行亮度的调整,调整的像素范围为[-max_detla, max_detla]
45.tf.image.random_saturation(image, lower=0.5, upper=1.5) 进行饱和度的调整, 在[0.5, 1.5]的范围内进行调整
46. tf.image.random_hue(image, max_delta) 进行色相的调整, 范围是[-max_delta, max_delta]
47. tf.image.random_contrast(image, lower=0.5, upper=1.5) 调整图像的对比度
48. tf.clip_by_value(image, 0.0, 1.0) # 对值域范围进行裁剪
49. tf.summary.image(name, tf.expand_dims(image, 0)) # 加上一个通道数,对图片进行缓存
50. tf.parse_single_sequence_example() ???
51 tf.FixedLenFeature([], dtype=tf.string)} ???
52. tf.FixedLenSequenceFeature([], dtype=tf.int64),}) ???
53 tf.gfile.Glob(pattern) # 根据文件名格式获取文件列表
54. filename_queue = tf.train.string_input_producer(data_files, shuffle=True, capacity=16, name=shard_queue_name) # 构建文件名队列
55. tf.RandomShuffleQueue( capacity=capacity, min_after_dequeue=min_queue_examples,dtypes=[tf.string],name="random_" + value_queue_name) # 生成随机数值队列
56 tf.FIFOQueue(capacity=capacity, dtypes=[tf.string], name="fifo_" + value_queue_name) # 生成顺序数值队列,遵循先进先出的原则
57. tf.train.queue_runner.add_queue_runner(tf.train.queue_runner.QueueRunner(values_queue, enqueue_ops)) # 将队列添加到队列执行器中
58. tf.train.batch_join(senqueue_list,batch_size=batch_size,capacity=queue_capacity,dynamic_pad=True,name="batch_and_pad") # 通过线程读取图片,同时进行补零操作 sequecen_list表示输入列表,capacity表示长度,dynamic_pad表示进行补零操作
59. tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope="InceptionV3") # 取出参数
60 tf.contrib.layers.fully_connected(inputs=inception_output,num_outputs=self.config.embedding_size,activation_fn=None,
weights_initializer=self.initializer,biases_initializer=None,scope=scope) # 进行全连接操作, inputs表示输入, num_outputs表示输出的维度
61.tf.nn.embedding_lookup(embedding_map, self.input_seqs) #根据位置索引进行取值,self.input_seqs表示的是位置索引
62. tf.contrib.rnn.BasicLSTMCell(num_units=self.config.num_lstm_units, state_is_tuple=True) 构建基础的LSTM模型, num_lstm_units表示隐含层的个数
63.tf.contrib.rnn.DropoutWrapper(lstm_cell,input_keep_prob=self.config.lstm_dropout_keep_prob,output_keep_prob=self.config.lstm_dropout_keep_prob) 主要用于rnn的dropout,input_keep_prob表示输入层的dropout,output_keep_prob表示输出层的dropout
64.lstm_cell.zero_state(batch_size=self.image_embeddings.get_shape()[0], dtype=tf.float32) # 用于生成RNN初始状态的全零隐含状态
65 lstm_cell(self.image_embeddings, zero_state).# 输入图片特征和初始化的全零隐含层,获得第一个输出
66.lstm_scope.reuse_variables() #lstm_scope 表示scope的名字,reuse_variable表示权重进行复用
67.tf.nn.dynamic_rnn(cell=lstm_cell,inputs=self.seq_embeddings,sequence_length=sequence_length, initial_state=initial_state,dtype=tf.float32,scope=lstm_scope)
# 使用一层的神经网络,lstm_cell表示类型, input表示输入文字特征,initial_state=initial_state
68. tf.losses.add_loss(batch_loss) # 将batch_loss 加入到loss函数中
69.tf.losses.get_total_loss() # 取出所有的loss值
70.tf.train.exponential_decay(learning_rate,global_step,decay_steps=decay_steps,decay_rate=training_config.learning_rate_decay_factor,staircase=True)
learning_rate表示学习率,decay_steps表示多少步后进行衰减,decay_rate表示衰减系数,对学习率进行指数衰减
71.tf.contrib.layers.optimize_loss(loss=model.total_loss,global_step=model.global_step,learning_rate=learning_rate,optimizer=training_config.optimizer,
clip_gradients=training_config.clip_gradients, learning_rate_decay_fn=learning_rate_decay_fn)
# 构造优化步骤,loss使用的total_loss, learning_rate 表示的是学习率,optimizer表示优化器‘SGD’,clip_gradients表示梯度裁剪,learning_rate_decay_fn表示指数衰减的概率
72. tf.contrib.slim.learning.train(train_op,train_dir, log_every_n_steps=FLAGS.log_every_n_steps,graph=g,
global_step=model.global_step,number_of_steps=FLAGS.number_of_steps, init_fn=model.init_fn,saver=saver)
# 建立迭代模型,train_op表示训练时的ops, train_dir 表示训练参数的存储地址, log_every_n_steps表示迭代打印的次数,graph表示tf.graph,number_of_steps表示迭代的次数, init_fn表示初始的参数, saver=saver表示储存的
73. tf.train.Saver(max_to_keep=training_config.max_checkpoints_to_keep) # 建立参数存储器,max_to_keep表示存储的最大条数
74. tf.transpose(input, perm=[1, 0]) # 将行和列的位置进行调换
1. tf.placeholder_with_default(tf.constant(1.0),shape=[],name='use_dropout')
一个基本的占位符
2. tf.constant(input, size, name)
import tensorflow as tf import numpy as np y = tf.constant(1.0, shape=[1, 6]) # 生成shape=[1, 6]的 1矩阵 sess = tf.Session() print(sess.run(y))
3. tf.variable_scope(op_name, reuse=True) 表示的是变量的应用范围, op_name表示该范围的名字, reuse=True,表示变量进行复用
4. tf.get_variable(name, shape) # 创建用于进行权重迭代的参数
import tensorflow as tf import numpy as np y = tf.get_variable('weight', shape=[4])
5. tf.nn.conv2d(i, k, [1, s_h, s_w, 1], padding=padding) #进行卷积操作 , i 表示输入的样本, k表示卷积核, [1, s_h, s_w, 1] 表示卷积的步长, padding表示补零的方式
# input表示输入,[3, 3, 64, 128]表示卷积核的大小,[1, 1, 1, 1]表示步长,padding='SAME'表示补零的方式 net = tf.nn.conv2d(input, [3, 3, 64, 128], [1, 1, 1, 1], padding='SAME')
6. tf.nn.bias_add(output, bias) # 用于在输入数据中加入偏置项
7. tf.nn.relu(output, name=scope.name) # 用于对输入数据使用relu激活函数,name=scope.name 表示使用的范围
a = np.array([-1, -2, 3, 1, 2]) a[a<0] = 0 print(a) # [0 0 3 1 2] 将小于0的数转换为0
8. tf.nn.atrous_conv2d(i, k, dilation, padding=padding) # 进行膨胀卷积操作, i表示输入样本, k表示卷积核, diation表示孔的数目,padding表示补零的方式
膨胀卷积的操作主要是为了实现,在参数数量相同的情况下,增加图像的卷积时候的感受眼
9. tf.nn.max_pool(input, ksize=[1, 2, 2 ,1], stride=[1, 2, 2, 1], padding=padding, name=name) # 表示的是进行最大池化操作
10 tf.nn.avg_pool(input, ksize=[1, 2, 2, 1], stride=[1, 2, 2, 1], padding=padding, name=name) # 进行均值池化操作
11. tf.nn.local_response_normalization(input,depth_radius=radius,alpha=alpha, beta=beta, bias=bias,name=name) # 进行局部归一化响应
这里就是对同一个特征位置上的不同特征图前后之间进行归一化操作
12.tf.add_n(input, name=name) # 表示进行逐像素相加, 用在残差直连上
import tensorflow as tf import numpy as np a = [[1, 2], [3, 4]] y = tf.add_n(a) sess = tf.Session() print(sess.run(y))
# 构造L2_loss损失值
L2_loss = tf.add_n(slim.losses.get_regularization_losses()) # 获得L2_loss损失值
13.tf.nn.relu_layer(feed_in, weights, biases, name) # return tf.relu(tf.matmul(feed_in, weights) + biases) # tf.matmul进行点成操作,然后加偏置项,进行relu操作
14. tf.nn.xw_plus_b(feed_in, weights, biases, name) # return tf.matmul(feed_in, weights) + biases
15 tf.nn.softmax(input, name) # 进行softmax激活函数
1/(np.exp(-input) + 1) # 相当于是这样的操作
16.tf.contrib.layers.batch_norm(input,activation_fn=activation_fn,is_training=is_training,updates_collections=None,scale=scale,scope=scope) # 进行归一化操作
# 进行归一化操作,这样的操作在生成网络中比较常用,主要是为了保证生成的图片,其输入层具有一定的一致性,在一定程度上可以防止过拟合
17.tf.nn.dropout(input, keep, name=name) # tf.nn.drop 表示的是随机选择权重参数进行更新, keep表示的是关闭权重参数的百分比
# 通常在全连接使用的次数较多
18. tf.set_random_seed(args.random_seed) # 设置随机种子
19. tf.train.Coordinator() # 构建队列协调器queue coordinator
20 restore_var = [v for v in tf.global_variables() if 'fc' not in v.name or not args.not_restore_last] # 通过sess.restore取出不是全连接的权重参数
21.all_trainable = [v for v in tf.trainable_variables() if 'beta' not in v.name and 'gamma' not in v.name] # 获得当前的训练参数
22.tf.nn.softmax_cross_entropy_with_logits(logist=logist, label=label) # 交叉熵损失函数,用于进行二分类的损失值计算
23 [args.weight_decay * tf.nn.l2_loss(v) for v in tf.trainable_variables() if 'weights' in v.name] # l2_loss进行weight权重参数的L2正则化
weight = [0.5, 0.5, 0.5] l2_loss = [0.05 * tf.nn.l2_loss(v) for v in tf.trainable_variables() if 'weight' in v.name] # 根据名字来获取weight进行l2_loss的构造 a = tf.nn.l2_loss(weight) print(sess.run(a)) # 0.375, 表示为sum(t**2) / 2
24 tf.scalar_mul # 进行浮点数相乘操作,可以用在learning_rate的迭代上
import tensorflow as tf import numpy as np x = tf.constant(1.0) step_ph = tf.placeholder(dtype=tf.float32, shape=()) y = tf.scalar_mul(step_ph, x) sess = tf.Session() print(sess.run(y, feed_dict={step_ph:1}))
25. tf.train.MomentumOptimizer(learning_rate, args.momentum) # 定义动量梯度下降优化器
26.tf.gradients(reduced_loss, conv_trainable + fc_w_trainable + fc_b_trainable) # 获取loss梯度值 reduced_loss 损失值, conv_trainable + 。。。权重值进行相加
27 tf.global_variables_initializer() # 进行权重初始化操作
28. tf.train.start_queue_runners(coord=coord, sess=sess) # 开启队列线程
29. tf.image.decode_jpeg # 进行图片解析
30. tf.convert_to_tensor # 将数据转换为tensor可以接受的数据格式
31 tf.train.slice_input_producer # 构建随机队列
32 tf.train.batch # tf.train.shuffle_batch随机获取,tf.train.batch按照顺序进行获取
import pandas as pd import numpy as np import tensorflow as tf def generate_data(): num = 25 label = np.asarray(range(0, num)) images = np.random.random([num, 5]) print('label size :{}, image size {}'.format(label.shape, images.shape)) return images,label def get_batch_data(): label, images = generate_data() # tf.train.slice_input_producer 构建随机队列 input_queue = tf.train.slice_input_producer([images, label], shuffle=False,num_epochs=2) # 将数据和标签进行放入 image_batch, label_batch = tf.train.batch(input_queue, batch_size=5, num_threads=1, capacity=64,allow_smaller_final_batch=False) return image_batch,label_batch images,label = get_batch_data() sess = tf.Session() sess.run(tf.global_variables_initializer()) sess.run(tf.local_variables_initializer())#就是这一行 coord = tf.train.Coordinator() threads = tf.train.start_queue_runners(sess,coord) try: while not coord.should_stop(): i,l = sess.run([images,label]) print(i) print(l) except tf.errors.OutOfRangeError: print('Done training') finally: coord.request_stop() coord.join(threads) sess.close()
33. tf.image.resize_nearest_neighbor(input_batch, new_size) # 进行图片的维度变化,使用最近邻进行图片的维度变化
34 tf.image.resize(input_batch, new_size, method) # 进行图片的维度变化,可以进行多种插值方法,默认为线性插值
35. tf.one_hot(input_batch, depth=num_classes) # 进行独热编码, depth表示的是维度
import tensorflow as tf import numpy as np a = [1, 2, 3, 4] y = tf.one_hot(a, depth=5) sess = tf.Session() print(sess.run(y))
36. tf.reverse(img, axis) 表示对图片进行翻转
import cv2 img = cv2.imread('001.jpg') img = tf.reverse(img, axis=[1]) img = sess.run(img) cv2.imshow('img', img) cv2.waitKey(0)
37 tf.random_crop(img, [h, w, 3]) # 对图片进行随机裁剪
img = tf.random_crop(img, [200, 200, 3]) # 200, 200 表示尺寸 img = sess.run(img) cv2.imshow('crop', img) cv2.waitKey(0)
38 combined_pad = tf.image.pad_to_bounding_box(combined, 0, 0, tf.maximum(crop_h, image_shape[0]), tf.maximum(crop_w, image_shape[1]))
# 表示进行补零操作 第一个0表示在顶部添加0的行数,在左侧添加0的列数, 后面两个参数表示输出图片的高度和宽度
# 10 表示顶部添加0的行数,10表示左侧添加0的列数,300,300表示补完零以后的尺度
combined_pad = tf.image.pad_to_bounding_box(img, 10, 10, 300, 300) img = sess.run(combined_pad) cv2.imshow('pad', img) cv2.waitKey(0)
39. tf.TFRecordReader() 构建TFRecord读取器
40.tf.random_uniform_initializer(min, max) # 随机标准差初始化, min, max表示标准化的范围
41.tf.image.convert_image_dtype(image, dtype=tf.float32) # 将图片进行类型转换
42.tf.image.resize_image_with_crop_or_pad(image, height, width) # 如果图片的维度大于height和width进行裁剪操作,否者进行补零操作
43. tf.image.random_flip_left_right(image) # 以一定的概率进行翻转操作,就是说可能翻转也可能不翻转,个人觉得概率应该是0.5
image = tf.image.random_flip_left_right(img) image = sess.run(image) cv2.imshow('flip', image) cv2.waitKey(0)
44. tf.image.random_brightness(image, max_delta=32. / 255.) # 进行亮度的随机变化,调整的像素范围为[-max_detla, max_detla]
45.tf.image.random_saturation(image, lower=0.5, upper=1.5) 进行饱和度的随机变化, 在[0.5, 1.5]的范围内进行调整
46. tf.image.random_hue(image, max_delta) 进行色相的随机变化
47. tf.image.random_contrast(image, lower=0.5, upper=1.5) 调整图像的随机变化对比度
48. tf.clip_by_value(image, 0.0, 1.0) # 对值域范围进行裁剪, 大于1.0的数值使用1.0表示,小于0的数值使用0表示
a = tf.constant([0.2, 0.3, 1.1, -0.3]) b = tf.clip_by_value(a, 0.0, 1.0) b = sess.run(b) print(b) # 0.2, 0.3, 1.0, 0.0
49. tf.summary.image(name, tf.expand_dims(image, 0)) # 加上一个通道数,对图片进行缓存
a = tf.constant([0.2, 0.3, 1.1, -0.3]) # 在axis=1上添加一个维度 print(a.shape) # (4, ) c = tf.expand_dims(a, 1) print(c.shape) # (4, 1)
50. tf.parse_single_sequence_example() # 构造出队列字典,用于进行TF_record的写入
import tensorflow as tf import os sess=tf.InteractiveSession() sess.run(tf.global_variables_initializer()) def make_example(key): example = tf.train.Example(features=tf.train.Features( feature={ 'ft':tf.train.Feature(float_list=tf.train.FloatList(value=key)) } )) return example features={ "ft":tf.FixedLenFeature(shape=[3],dtype=tf.float32) } key_parsed = tf.parse_single_example(make_example([1.0,2.0,3.0]).SerializeToString(),features) print tf.contrib.learn.run_n(key_parsed)
51 tf.FixedLenFeature([], dtype=tf.string)} 从上面的列子可以看出,这部分是用来构造出空位子的类别,TF写入里面用来构造出string
features={ "ft":tf.FixedLenFeature(shape=[3],dtype=tf.float32) }
52. tf.FixedLenSequenceFeature([], dtype=tf.int64),}) #用于构造多个列表字典
context_features = { "locale": tf.FixedLenFeature([],dtype=tf.string), "age": tf.FixedLenFeature([],dtype=tf.int64) } sequence_features = { "movie_rating": tf.FixedLenSequenceFeature([3], dtype=tf.float32,allow_missing=True) } context_parsed, sequence_parsed = tf.parse_single_sequence_example(make_example("china",24,[1.0,3.5,4.0],2),context_features=context_features,sequence_features=sequence_features)
53 tf.gfile.Glob(pattern) # 根据文件名格式获取文件列表
x = tf.gfile.Glob('picture/*.jpg') # 找出picture文件中所有的图片 print(x)
54. filename_queue = tf.train.string_input_producer(data_files, shuffle=True, capacity=16, name=shard_queue_name) # 构建文件名队列, 用于进行线程变化
55. tf.RandomShuffleQueue( capacity=capacity, min_after_dequeue=min_queue_examples,dtypes=[tf.string],name="random_" + value_queue_name) # 生成随机数值队列
56 tf.FIFOQueue(capacity=capacity, dtypes=[tf.string], name="fifo_" + value_queue_name) # 生成顺序数值队列,遵循先进先出的原则
57. tf.train.queue_runner.add_queue_runner(tf.train.queue_runner.QueueRunner(values_queue, enqueue_ops)) # 将队列添加到队列执行器中
58. tf.train.batch_join(enqueue_list,batch_size=batch_size,capacity=queue_capacity,dynamic_pad=True,name="batch_and_pad") # 通过线程读取图片,同时进行补零操作
59. tf.get_collection(tf.GraphKeys.GLOBAL_VARIABLES, scope="InceptionV3") # 获得放入的变量
import tensorflow as tf import numpy as np import matplotlib.pyplot as plt # 将v1变量放入loss中 v1 = tf.get_variable(name='v1', shape=[1], initializer=tf.constant_initializer(0)) tf.add_to_collection('loss', v1) v2 = tf.get_variable(name='v2', shape=[1], initializer=tf.constant_initializer(2)) tf.add_to_collection('loss', v2) with tf.Session() as sess: sess.run(tf.initialize_all_variables()) # 将变量从loss中取出 print(tf.get_collection('loss')) print(sess.run(tf.add_n(tf.get_collection('loss'))))
60 tf.contrib.layers.fully_connected(inputs=inception_output,num_outputs=self.config.embedding_size,activation_fn=None,weights_initializer=self.initializer,biases_initializer=None,scope=scope) # 进行全连接操作
61.tf.nn.embedding_lookup(embedding_map, self.input_seqs) #根据位置索引进行取值,self.input_seqs表示的是位置索引,使用tf.gather也可以获取相同的效果
import tensorflow as tf; import numpy as np; c = np.random.random([10, 1]) b = tf.nn.embedding_lookup(c, [1, 3]) d = tf.gather(c, [1, 3]) # 根据索引值进行获取 with tf.Session() as sess: sess.run(tf.initialize_all_variables()) print(sess.run(b))
print(sess.run(d)) # 打印出d的位置信息
62. tf.contrib.rnn.BasicLSTMCell(num_units=self.config.num_lstm_units, state_is_tuple=True) # 构建LSTM模型 self.config_num_lstm_units 表示模型隐含层的个数
63. tf.contrib.rnn.DropoutWrapper(lstm_cell,input_keep_prob=self.config.lstm_dropout_keep_prob,output_keep_prob=self.config.lstm_dropout_keep_prob) # 添加dropout层进行防过拟合操作, 用于进行rnn的dropout操作
64.lstm_cell.zero_state(batch_size=self.image_embeddings.get_shape()[0], dtype=tf.float32) # 获得全零的初始隐含层操作
65.lstm_cell(self.image_embeddings, zero_state) # 获得第一个初始状态
66.lstm_scope.reuse_variables() lstm_scope 表示的当前scope_name,表示的是可以进行参数的复用操作
67. tf.nn.dynamic_rnn(cell=lstm_cell,inputs=self.seq_embeddings,sequence_length=sequence_length, initial_state=initial_state,dtype=tf.float32,scope=lstm_scope)
# 获得LSTM的输出,initial_state 表示的是将全0和图片特征输入后的初始状态
68. tf.losses.add_loss(batch_loss) 将外部定义的loss放入tf.losses.add_loss
69. tf.losses.get_total_loss() # 获得所有的loss值
70. tf.train.exponential_decay(learning_rate,global_step,decay_steps=decay_steps,decay_rate=training_config.learning_rate_decay_factor,staircase=True)
# 学习率进行指数形式的梯度衰减, learning_rate 表示的是初始学习率,decay_steps每迭代多少次进行衰减, decay_rate表示学习率的衰减系数, global_step表示当前的迭代次数,
# 学习率的衰减测试 learning_rate = tf.Variable(1.0, trainable=False) global_step = 100 learning_rate_now = tf.train.exponential_decay(learning_rate, 100, 50, 0.1) sess.run(tf.global_variables_initializer()) print(sess.run(learning_rate_now))
71.tf.contrib.layers.optimize_loss(loss=model.total_loss,global_step=model.global_step,learning_rate=learning_rate,optimizer=training_config.optimizer,clip_gradients=training_config.clip_gradients, learning_rate_decay_fn=learning_rate_decay_fn)
# 生成训练时的ops, loss表示总的损失值,learning_rate 表示初始学习率, optimizer表示梯度下降的方法,clip_gradients表示梯度剪裁,为了预防梯度爆炸的情况learning_rate_decay_fn,表示的学习率
用于构造ops降低loss的操作
72. tf.contrib.slim.learning.train(train_op,train_dir, log_every_n_steps=FLAGS.log_every_n_steps,graph=g,global_step=model.global_step,number_of_steps=FLAGS.number_of_steps, init_fn=model.init_fn,saver=saver)
# 建立迭代模型,train_op表示训练时的ops, train_dir 表示训练参数的存储地址, log_every_n_steps表示迭代打印的次数,graph表示tf.graph,number_of_steps表示迭代的次数, init_fn表示初始的参数, saver=saver表示储存的, 开始运行操作
73. tf.train.Saver(max_to_keep=training_config.max_checkpoints_to_keep) # 表示参数存储器 max_to_keep=training_config.max_checkpoints_to_keep 表示记录存储的最大条数, 构造存储的函数
74. tf.transpose(input, perm=[1, 0]) # 将行和列的位置进行调换
import tensorflow as tf import numpy as np x = [[1, 2, 3, 4], [1, 2, 4, 3]] print(np.shape(x)) sess = tf.Session() # 进行维度的变化,perm表示将第一二维度转换为第一个维度 print(sess.run(tf.transpose(x, perm=[1, 0])))
75. tf.InteractiveSession(config=tf.ConfigProto(allow_soft_placement=True)) # tf.InteractiveSession可以在定义图的时候插入一些图
76. lr = tf.Variable(learning_rate) # 创建可变的参数,平时可以用来构建global_step
global_step = tf.Vairble(0, trainable=False) # 构造初始化的global_step迭代次数,以用作优化学习率
77.tf.train.AdamOptimizer(learning_rate=lr) #表示的是自适应的梯度下降优化器
# 构造出自适应的梯度下降优化器, 防止出现梯度爆炸的情况
78 tf.clip_by_global_norm(grads,5.0) # 表示对梯度进行剪裁操作,5.3表示剪裁的力度,不过需要通过上面一步来求出grads值来
79.tf.device('/gpu:'+str(0)) #表示使用哪个gpu进行运行, 判断使用哪个GPU进行运行
with tf.device('/cpu:0'): a = tf.constant([1.0, 2.0, 3.0], shape=[3], name='a') b = tf.constant([3.0, 2.0, 1.0], shape=[3], name='b') c = a + b print(sess.run(c))
80.