SiameseFC代码阅读笔记
这里记录我阅读代码时遇到问题时做的笔记。
给出原作者代码项目链接:https://github.com/torrvision/siamfc-tf
np.unravel_index
找出最大值的位置
import numpy as np
if __name__ == '__main__':
s = [[1, 2], [3, 4]]
ans = np.unravel_index(np.argmax(s), np.shape(s))
print(ans)
(1, 1)
tf.reduce_mean
函数用于计算张量tensor沿着指定的数轴(tensor的某一维度)上的的平均值,主要用作降维或者计算tensor(图像)的平均值。
有时我们需要减去图像的平均值,而使目标获得更大的相应而不是背景。
tf.global_variables_initializer()添加节点用于初始化全局变量
(GraphKeys.GLOBAL_VARIABLES)。返回一个初始化所有全局变量的操作(Op)。在你构建完整个模型并在会话中加载模型后,运行这个节点。
import tensorflow as tf
# 必须要使用global_variables_initializer的场合
# 含有tf.Variable的环境下,因为tf中建立的变量是没有初始化的,也就是在debug时还不是一个tensor量,而是一个Variable变量类型
size_out = 10
tensor = tf.Variable(tf.random_normal(shape=[size_out]))
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init) # initialization variables
print(sess.run(tensor))
# 可以不适用初始化的场合
# 不含有tf.Variable、tf.get_Variable的环境下
# 比如只有tf.random_normal或tf.constant等
size_out = 10
tensor = tf.random_normal(shape=[size_out]) # 这里debug是一个tensor量哦
init = tf.global_variables_initializer()
with tf.Session() as sess:
# sess.run(init) # initialization variables
print(sess.run(tensor))
tf.train.Coordinator
实现对Session中多线程的管理 链接:https://blog.csdn.net/weixin_42052460/article/details/80714539
tf.train.start_queue_runners
解析链接:https://blog.csdn.net/qq_39521554/article/details/94017283
# 导入tensorflow
import tensorflow as tf
# 新建一个Session
with tf.Session() as sess:
# 我们要读三幅图片A.jpg, B.jpg, C.jpg
filename = ['A.jpg', 'B.jpg', 'C.jpg']
# string_input_producer会产生一个文件名队列
filename_queue = tf.train.string_input_producer(filename, shuffle=False, num_epochs=5)
# reader从文件名队列中读数据。对应的方法是reader.read
reader = tf.WholeFileReader()
key, value = reader.read(filename_queue)
# tf.train.string_input_producer定义了一个epoch变量,要对它进行初始化
tf.local_variables_initializer().run()
# 使用start_queue_runners之后,才会开始填充队列
threads = tf.train.start_queue_runners(sess=sess)
i = 0
while True:
i += 1
# 获取图片数据并保存
image_data = sess.run(value)
with open('read/test_%d.jpg' % i, 'wb') as f:
f.write(image_data)