tensorflow
like_study_cat
这个作者很懒,什么都没留下…
展开
-
两种scope:variable与name
两种scope:variable与nametf.variable_scope()是对变量进行命名管理,而tf.name_scope()是对算子(op)进行命名管理,二者相互不影响。见下例: import tensorflow as tf for i in range(10): with tf.name_scope('test'): a = tf.constant([1]) b = tf.constant([1]) c = a + b转载 2020-12-07 16:24:50 · 195 阅读 · 0 评论 -
tensorflow变量作用域(variable scope)
举例说明TensorFlow中的变量一般就是模型的参数。当模型复杂的时候共享变量会无比复杂。官网给了一个case,当创建两层卷积的过滤器时,每输入一次图片就会创建一次过滤器对应的变量,但是我们希望所有图片都共享同一过滤器变量,一共有4个变量:conv1_weights,conv1_biases,conv2_weights, and conv2_biases。通常的做法是将这些变量设置为全局变量。但是存在的问题是打破封装性,这些变量必须文档化被其他代码文件引用,一旦代码变化,调用方也可能需要变化。还有转载 2020-05-19 10:11:05 · 248 阅读 · 0 评论 -
numpy和tensor的转换
#转化为numpy数组#通过.eval函数可以把tensor转化为numpy类数据img_numpy=img.eval(session=sess)print("out2=",type(img_numpy))#转化为tensorimg_tensor= tf.convert_to_tensor(img_numpy)print("out2=",type(img_tensor))...原创 2020-04-03 13:58:07 · 561 阅读 · 0 评论 -
Tensorflow中API------tf.data.Dataset使用
Tensorflow中API------tf.data.Dataset使用Tensorflow中之前主要用的数据读取方式主要有:建立placeholder,然后使用feed_dict将数据feed进placeholder进行使用。使用这种方法十分灵活,可以一下子将所有数据读入内存,然后分batch进行feed;也可以建立一个Python的generator,一个batch一个batch的将数...转载 2020-04-02 15:42:11 · 158 阅读 · 0 评论 -
slim模块翻译
地址:https://blog.csdn.net/guvcolie/article/details/77686555外加batch_norm处理slim.batch_norm()函数,以及slim的各个层函数的normalizer_fn=slim.batch_norm调用都会用到,其参数很多,需要以字典的形式传入,batch_norm_params = { # 定义batch norm...原创 2020-03-16 18:45:41 · 101 阅读 · 0 评论 -
tf.pad使用
TensorFlow pad函数使用方法函数定义tf.pad( tensor, paddings, mode='CONSTANT', name=None, constant_values=0)参数说明tensor 被填充的张量paddings 填充的格式mode 填充模式:"CONSTANT"、"REFLECT"...转载 2020-03-16 12:00:56 · 68 阅读 · 0 评论 -
tensorflow中协调器 tf.train.Coordinator 和入队线程启动器 tf.train.start_queue_runners
以上对列(Queue)和 协调器(Coordinator)操作示例:# -*- coding:utf-8 -*-import tensorflow as tfimport numpy as np # 样本个数sample_num=5# 设置迭代次数epoch_num = 2# 设置一个批次中包含样本个数batch_size = 3# 计算每一轮epoch中含有的batch个数...原创 2020-01-14 15:59:14 · 196 阅读 · 0 评论 -
tf.argmax函数说明
tf.argmax函数说明tf.argmax( input, axis=None, name=None, dimension=None, output_type=tf.int64) 参数: input:输入矩阵 axis:默认为None name:默认为None dimension:默认为None outpu...转载 2020-01-14 15:12:10 · 182 阅读 · 0 评论 -
tf.one_hot()函数简介
tf.one_hot()函数简介tf.one_hot()函数是将input转化为one-hot类型数据输出,相当于将多个数值联合放在一起作为多个相同类型的向量,可用于表示各自的概率分布,通常用于分类任务中作为最后的FC层的输出,有时翻译成“独热”编码。tensorflow的help中相关说明如下:one_hot(indices, depth, on_value=None, off_value...转载 2020-01-14 15:00:46 · 540 阅读 · 0 评论 -
tf.add_to_collection、 tf.get_collection 和 tf.add_n函数
tf.add_to_collection、 tf.get_collection 和 tf.add_n函数原创 2020-01-13 11:05:42 · 151 阅读 · 0 评论 -
tf.py_func()函数
tf.py_func()函数tensorflow由于构建的是静态图,所以导致在tf.Session().run()之前是没有实际值的,因此,在网络搭建的时候,是不能对tensor进行判值操作的,即不能插入if…else…之类的代码。第二,相较于numpy array,Tensorflow中对tensor的操作接口灵活性并没有那么高,使得Tensorflow的灵活性减弱。扩展Tensorflow...原创 2020-01-10 14:46:55 · 126 阅读 · 0 评论 -
关于感受野的理解与计算
关于感受野的理解与计算感受野在卷积神经网络中,感受野(Receptive Field)的定义是卷积神经网络每一层输出的特征图(feature map)上每个像素点在原始图像上映射的区域大小,这里的原始图像是指网络的输入图像,是经过预处理(如resize,warp,crop)后的图像。神经元之所以无法对原始图像的所有信息进行感知,是因为在卷积神经网络中普遍使用卷积层和pooling层,在层与层...转载 2020-01-07 18:28:16 · 294 阅读 · 0 评论 -
tensorflow中slim模块api介绍
转自https://blog.csdn.net/guvcolie/article/details/77686555tensorflow中slim模块api介绍TensorFlow-SlimTF-Slim is a lightweight library for defining, training and evaluating complexmodels in TensorFlow. Com...转载 2020-01-07 15:32:54 · 233 阅读 · 0 评论 -
tf.variable_scope和tf.name_scope,tf.Variables和tf.get_variables
原创 2020-01-06 17:42:09 · 71 阅读 · 0 评论 -
tensorflow中几种读取图片文件并显示方法
tensorflow中几种读取图片文件并显示方法方式一:通过tf.gfile.FastGFile()读取图像文件tf.gfile模块提供了tensorflow中通用的文件I/O操作。tf.gfile.FastGFile(filename, mode)函数用于获取文件操作句柄,类似于python中的文本操作open()函数。第一个参数filename是文件路径,第二个参数mode是文件编码方...原创 2020-01-03 14:49:30 · 1098 阅读 · 0 评论 -
反卷积
原创 2020-01-03 10:30:59 · 110 阅读 · 1 评论 -
简单的学习tensorflow的中文文档
https://www.w3cschool.cn/tensorflow_python/tensorflow_python-rujw28uc.html原创 2020-01-02 19:02:30 · 97 阅读 · 0 评论 -
Tensorflow中的reshape、set_shape的区别!!!
Tensorflow中的reshape、set_shape的区别!!!讨论reshape与set_shape的区别之前,我们首先需要知道dynamic shape和static shape的区别:Tensorflow在构建图的时候,tensor的shape被称为static(inferred);而在实际运行中,常常出现图中tensor的具体维数不确定而用placeholder代替的情况,因此s...原创 2020-01-02 18:43:18 · 540 阅读 · 0 评论 -
InvalidArgumentError (see above for traceback): Number of ways to split should evenly divide the spl
错误信息InvalidArgumentError (see above for traceback): Number of ways to split should evenly divide the split dimension, but got split_dim 3 (size = 4) and num_split 3[[Node: Validation/Processing/spli...原创 2020-01-02 17:57:50 · 944 阅读 · 0 评论 -
【tensorflow 学习】tf.split()和tf.squeeze()
split( value, num_or_size_splits, axis=0, num=None, name='split')输入:value: 输入的tensornum_or_size_splits: 如果是个整数n,就将输入的tensor分为n个子tensor。如果是个tensor T,就将输入的tensor分为len(T)个子tensor...原创 2020-01-02 17:50:18 · 143 阅读 · 0 评论 -
深度学习分布式训练相关介绍 - Part 2 详解分布式训练架构PS-Worker与Horovod
我们介绍了多GPU机器的训练方式,可以利用一台机器上的所有GPU设备进行模型的训练,但是一般我们的服务器最多只支持装下8张GPU卡,怎样进一步利用更多的将几十甚至几百台服务器的GPU资源来提升我们的训练效果呢?在这篇文章中,我们将探讨:TensorFlow原生的PS-Worker架构是如何进行分布式训练的?为什么Uber提出的Horovod框架相比于TensorFlow原生 PS-Work...原创 2019-12-18 14:43:26 · 1849 阅读 · 0 评论 -
深度学习分布式训练相关介绍 - Part 1 多GPU训练
本篇文章主要是对深度学习中运用多GPU进行训练的一些基本的知识点进行的一个梳理文章中的内容都是经过认真地分析,并且尽量做到有所考证抛砖引玉,希望可以给大家有更多的启发,并能有所收获介绍大多数时候,梯度下降算法的训练需要较大的Batch Size才能获得良好性能。而当我们选择比较大型的网络时候,由于GPU资源有限,我们往往要减少样本数据的Batch Size。当GPU无法存储足够的训练样本...原创 2019-12-18 14:23:53 · 842 阅读 · 0 评论 -
优化器
优化器 :基类:tf.train.optimizer()基类下面的方法:minimize(cost,<list of variables) ,返回一个节点,会更新当前step的gradients,variables,lostcompute_gradients(loss, <list of variables),# return grads_and_vars, grads_and...原创 2019-12-18 13:39:38 · 2112 阅读 · 0 评论 -
tf.cond()
在TensorFlow中,tf.cond()类似于c语言中的if…else…,用来控制数据流向,但是仅仅类似而已,其中差别还是挺大的。关于tf.cond()函数的具体操作,我参考了tf的说明文档。format:tf.cond(pred, fn1, fn2, name=None)Return :either fn1() or fn2() based on the boolean predicat...原创 2019-12-17 13:26:04 · 173 阅读 · 0 评论 -
tf.identity()的意义以及用例
下面程序的功能是,做5次循环,每次循环给x加1,赋值给y,然后打印出来,所以我们预期达到的效果是输出2,3,4,5,6。x = tf.Variable(1.0)y = tf.Variable(0.0)#返回一个op,表示给变量x加1的操作x_plus_1 = tf.assign_add(x, 1)#control_dependencies的意义是,在执行with包含的内容(在这里就是...原创 2019-12-15 15:48:52 · 456 阅读 · 0 评论 -
Saver类
class tf.train.Saver()init(var_list=None, # var_list指定将保存和恢复的变量。它可以作为一个dict或一个列表传递。如果你不给tf.train.Saver()传入任何 参数,那么saver将处理graph中的所有变量。其中每一个变量都以变量创建时传入的名称被保存。有时候在检查点文件中明确定义变量的名称很有用。举个例子,你也许已经训练得到了一...原创 2019-12-12 11:42:40 · 163 阅读 · 0 评论 -
将图模型写入pb文件
Writes a graph proto on disk:将图模型写入pb文件tf.train.write_graph(graph_def, logdir, name, as_text=True)v = tf.Variable(0, name='my_variable')sess = tf.Session()tf.train.write_graph(sess.graph_def, '/t...原创 2019-12-12 10:48:41 · 150 阅读 · 0 评论 -
获取global_step的值
tf.train.global_step(sess, global_step_tensor)返回global_step的值# Creates a variable to hold the global_step.global_step_tensor = tf.Variable(10, trainable=False, name='global_step')# Creates a sessi...原创 2019-12-12 10:35:58 · 356 阅读 · 0 评论 -
tf.train.ExponentialMovingAverage
class tf.train.ExponentialMovingAverage:tf.train.ExponentialMovingAverage.__init__(decay, num_updates=None, name='ExponentialMovingAverage')传入decay,num_updatas来创建一个滑动平均对象decay会在训练一开始比较低(例如0.9),这...原创 2019-12-11 18:48:09 · 196 阅读 · 0 评论 -
tf.control_dependencies()作用及用法
tf.control_dependencies()作用及用法:control_dependencies(control_inputs)返回一个控制依赖的上下文管理器,指定某些操作执行的依赖关系,使用with关键字可以让在这个上下文环境中的操作都在control_inputs 执行(把这些操作放在control_inputs列表里就好了)。注意:控制依赖只对那些在上下文环境中建立的操作有效,仅仅...原创 2019-12-11 16:59:49 · 155 阅读 · 0 评论 -
tensorflow算术操作
原创 2019-12-11 10:26:18 · 118 阅读 · 0 评论 -
卷积核是奇数的原因
吴恩达的DeepLearning课程讲了两个原因:一是padding的原因,如果f是奇数,就可以从图像的两边对称的padding。二是奇数的f 有明确的锚点(central pixel )可以方便的确定position。...原创 2019-12-09 11:03:19 · 142 阅读 · 0 评论 -
batchnorm批量泛化
Batchnorm主要解决的问题:covariate shift:我们知道在做ml相关的项目时,由于训练数据和测试数据存在分布的差异性,需要对数据做归一化和白化,来提升模型的收敛速度和泛化性(训练时,数据归一化;测试时数据归一化)。Covariate ShiftShift 就是描述的训练预测输入数据分布不一致的现象,通过归一化,提升了模型的泛化能力,同时把数据缩放到一定的范围内可以提升模型的收...原创 2019-12-07 19:06:15 · 211 阅读 · 0 评论 -
滑动平均算法
为什么要使用滑动平均模型?因为在神经网络中, 更新的参数时候不能太大也不能太小,更新的参数跟你之前的参数有联系,不能发生突变。一旦训练的时候遇到个“疯狂”的参数,有了滑动平均模型,疯狂的参数就会被抑制下来,回到正常的队伍里。这种对于突变参数的抑制作用,用专业术语讲叫鲁棒性,鲁棒性就是对突变的抵抗能力,鲁棒性越好,这个模型对恶性参数的提抗能力就越强。参数decay:滑动平均模型通过控制衰减率(d...原创 2019-12-07 17:28:36 · 3789 阅读 · 0 评论