从 SRGAN(TensorFlow) 导出中间层图像数据到文本文件

为了便于比对定位每一层的不同,需要从 TensorFlow 导出中间层图像数据到文本文件,再载入我们的某一层输入,来看看输出有什么不同?

在《经验干货:使用tf.py_func函数增加Tensorflow程序的灵活性》一文中介绍了py_func函数,所以我们在前面的基础上,也来个py_func函数。

保存数据函数:

def _save_mat(name, tensor_x): # 保存多通道图像数据到txt文件
	print(tensor_x.shape)
	f=open(name.decode('utf-8')+'.txt','w')
	for i in range(tensor_x.shape[3]):#图像通道数
		v_2d=tensor_x[0, :, :,i] #取出一个通道
		w=v_2d.shape[0] #图像宽高
		h=v_2d.shape[1]
		for Ii in range(w):
			for Ji in range(h):
				strNum = str(v_2d[Ii,Ji]) #每一点数据
				f.write(strNum)
				f.write(' ')#数据间隔一空格
			f.write('\n')
		f.write('\n')#通道间隔一空行
	f.close()
	return

py_func调用函数:

def _zhuanhuan_x_1(name, tensor_x,i): # 多通道图像转换1通道
	_save_mat(name, tensor_x)
	v_2d=tensor_x[0, :, :,i]
	return v_2d

前面的 zhuanhuan_64_1 已经改为 zhuanhuan_x_1:

# 多通道转换1通道,并保存图像 以及保存多通道图像数据到txt文件
def zhuanhuan_x_1(name, tensor_x):
	for i in range(1):
		tensor_1 = tf.py_func(_zhuanhuan_x_1, [name, tensor_x,i],tf.float32)# 调用
		conv1out = tf.reshape(tensor_1, shape=[1, tf.shape(tensor_1)[0], tf.shape(tensor_1)[1], 1]) # 2d->4d
		tf.summary.image(name, conv1out,max_outputs=64)
	return

这样就可以导出每一层数据了。

你可能感兴趣的:(超分辨率重建)