『cs231n』通过代码理解gan网络&tensorflow共享变量机制_上 上篇是一个尝试生成minist手写体数据的简单GAN网络,之前有介绍过,图片维度是28*28*1,生成器的上采样使用的是tf.image.resize_image(),不太正规,不过其他部分很标准,值得参考学习. 辨别器: n,28,28,1    :卷积 + 激活 + 池化 n,14,14,32  :卷积 + 激活 + 池化 n,7,7,64     :reshape n,7*7*64    :全连接 + 激活 n,…
GAN网络架构分析 上图即为GAN的逻辑架构,其中的noise vector就是特征向量z,real images就是输入变量x,标签的标准比较简单(二分类么),real的就是tf.ones,fake的就是tf.zeros. 网络具体形状大体如上,具体数值有所调整,生成器过程为:噪声向量-全连接-卷积-卷积-卷积,辨别器过程:图片-卷积-卷积-全连接-全连接. 和预想的不同,实际上数据在生成器中并不是从无到有由小变大的过程,而是由3136(56*56)经过正常卷积步骤下降为28*28的过程. 实…
『cs231n』卷积神经网络的可视化应用 文件目录 vgg16.py import os import numpy as np import tensorflow as tf from download import exist_or_download model_url = 'https://s3.amazonaws.com/cadl/models/vgg16.tfmodel' model_dir = 'vgg16/' model_name = 'vgg16.tfmodel' def mode…
概述 LSTM是RNN的增强版,1.RNN能完成的工作LSTM也都能胜任且有更好的效果:2.LSTM解决了RNN梯度消失或爆炸的问题,进而可以具有比RNN更为长时的记忆能力.LSTM网络比较复杂,而恰好找到一篇不错的介绍文章,和课程的讲述范围差不多,所以这里摘下来(自己截图记录好麻烦),另外找到一篇推了公式的LSTM介绍,这个cs231n的课程并没有涉及,我暂时也不做这方面的研究,不过感觉内容不错,链接记下来以备不时之需. 本篇原文链接 RNN以及LSTM的介绍和公式梳理 按照老师的说法,LST…
『TensorFlow』以GAN为例的神经网络类范式 『cs231n』通过代码理解gan网络&tensorflow共享变量机制_上 『TensorFlow』通过代码理解gan网络_中 一.计算图效果以及实际代码实现 计算图效果 实际模型实现 相关介绍移步我的github项目. 二.生成器与判别器设计 生成器 相关参量, 噪声向量z维度:100 标签向量y维度:10(如果有的话) 生成器features控制参量gf标量值:64 生成器features控制参量gfc标量值:1024 无标签训练, 1…
线程控制器类 线程控制器原理: 监视tensorflow所有后台线程,有异常出现(主要是越界,资源循环完了)时,其should_stop方法就会返回True,而它的request_stop方法则用于要求各个线程安全退出.需要使用local变量,初始化时注意. coord = tf.train.Coordinator() # 线程控制器 threads = tf.train.start_queue_runners(coord=coord) # 启动队列 try: while not coord.s…
tf.trainable_variables可以得到整个模型中所有trainable=True的Variable,也是自由处理梯度的基础 基础梯度操作方法: tf.gradients 用来计算导数.该函数的定义如下所示 def gradients(ys, xs, grad_ys=None, name="gradients", colocate_gradients_with_ops=False, gate_gradients=False, aggregation_method=None)…
『TensorFlow』第七弹_保存&载入会话_霸王回马 一.TensorFlow常规模型加载方法 保存模型 tf.train.Saver()类,.save(sess, ckpt文件目录)方法 参数名称 功能说明 默认值 var_list Saver中存储变量集合 全局变量集合 reshape 加载时是否恢复变量形状 True sharded 是否将变量轮循放在所有设备上 True max_to_keep 保留最近检查点个数 5 restore_sequentially 是否按顺序恢复变量,模型…
一.论文介绍 读论文系列:Object Detection ECCV2016 SSD 一句话概括:SSD就是关于类别的多尺度RPN网络 基本思路: 基础网络后接多层feature map 多层feature map分别对应不同尺度的固定anchor 回归所有anchor对应的class和bounding box 网络结构简介 输入:300x300 经过VGG-16(只到conv4_3这一层) 经过几层卷积,得到多层尺寸逐渐减小的feature map 每层feature map分别做3x3卷积,…
本节中的代码大量使用『TensorFlow』分布式训练_其一_逻辑梳理中介绍的概念,是成熟的多机分布式训练样例 一.基本概念 Cluster.Job.task概念:三者可以简单的看成是层次关系,task可以看成每台机器上的一个进程,多个task组成job:job又有:ps.worker两种,分别用于参数服务.计算服务,组成cluster. 同步更新 各个用于并行计算的电脑,计算完各自的batch 后,求取梯度值,把梯度值统一送到ps服务机器中,由ps服务机器求取梯度平均值,更新ps服务器上的参数…
『TensorFlow』降噪自编码器设计  之前学习过的代码,又敲了一遍,新的收获也还是有的,因为这次注释写的比较详尽,所以再次记录一下,具体的相关知识查阅之前写的文章即可(见上面链接). # Author : Hellcat # Time : 2017/12/6 import numpy as np import sklearn.preprocessing as prep import tensorflow as tf from tensorflow.examples.tutorials.mn…
VGGNet网络介绍 VGG系列结构图, 『cs231n』卷积神经网络工程实践技巧_下 1,全部使用3*3的卷积核和2*2的池化核,通过不断加深网络结构来提升性能. 所有卷积层都是同样大小的filter:尺寸3x3,卷积步长Stirde = 1,填充Padding = 1 为什么这么搞? A.3x3是最小的能够捕获左.右.上.下和中心概念的尺寸: B.两个3x3的卷积层连在一起可视为5x5的filter,三个连在一起可视为一个7x7的 这是卷积的性质,受过#信号系统#这门课摧残的同学应该记忆犹新…
TensorFlow:官方文档 TensorFlow:项目地址 本篇列出文章对于全零新手不太合适,可以尝试TensorFlow入门系列博客,搭配其他资料进行学习. Keras使用tf.Session训练方法教程 一.API介绍 基础操作列表 『TensorFlow』0.x_&_1.x版本框架改动汇总 『TensorFlow』函数查询列表_数值计算 『TensorFlow』函数查询列表_张量属性调整 『TensorFlow』简单的数学计算 『TensorFlow』变量初始化 常用基础操作 『Ten…
滑动平均会为目标变量维护一个影子变量,影子变量不影响原变量的更新维护,但是在测试或者实际预测过程中(非训练时),使用影子变量代替原变量. 1.滑动平均求解对象初始化 ema = tf.train.ExponentialMovingAverage(decay,num_updates) 参数decay `shadow_variable = decay * shadow_variable + (1 - decay) * variable` 参数num_updates `min(decay, (1 +…
argparse很强大,但是我们未必需要使用这么繁杂的东西,TensorFlow自己封装了一个简化版本的解析方式,实际上是对argparse的封装 脚本化调用tensorflow的标准范式: import pprint import tensorflow as tf flags = tf.app.flags # 脚本参数名,值,描述 # 脚本参数有四种取值:整数,浮点数,字符串,布尔类型,也是相比argv模块高级 flags.DEFINE_integer("epoch", 25, &q…
一.TFRecord文件书写效率对比(单线程和多线程对比) 1.准备工作 # Author : Hellcat # Time : 18-1-15 ''' import os os.environ["CUDA_VISIBLE_DEVICES"]="-1" ''' import os import glob import numpy as np import tensorflow as tf import matplotlib.pyplot as plt np.set_…
首更: 由于TensorFlow的奇怪形式,所以载入保存的是sess,把会话中当前激活的变量保存下来,所以必须保证(其他网络也要求这个)保存网络和载入网络的结构一致,且变量名称必须一致,这是caffe...好吧,caffe也没有这种python风格的设定... 废话少说,导入包: import numpy as np import tensorflow as tf 保存会话: W = tf.Variable([[1,2,3],[4,5,6]],dtype=tf.float32) b = tf.V…
Fork版本项目地址:SSD 一.TFR数据读取 创建slim.dataset.Dataset对象 在train_ssd_network.py获取数据操作如下,首先需要slim.dataset.Dataset对象 # Select the dataset. # 'imagenet', 'train', tfr文件存储位置 # TFR文件命名格式:'voc_2012_%s_*.tfrecord',%s使用train或者test dataset = dataset_factory.get_datas…
『PyTorch』第六弹_最小二乘法对比PyTorch和TensorFlow TensorFlow 控制流程操作 TensorFlow 提供了几个操作和类,您可以使用它们来控制操作的执行并向图中添加条件依赖关系. tf.identity 『TensorFlow』流程控制之tf.identity tf.tuple tf.group 创建一个操作,该操作可以对 TensorFlow 的多个操作进行分组,输入需要进行分组的零个或多个张量. tf.no_op tf.count_up_to tf.cond…
简介 这里的生成式网络是广义的生成式,不仅仅指gan网络,还有风格迁移中的类自编码器网络,以及语义分割中的类自编码器网络,因为遇到次数比较多,所以简单的记录一下. 背景 1.像素和数字 图像处理目标一般就是RGB三色通道,原始图像解码后是0~255,这个矩阵传给matplotlib就可以直接绘图了,与此同0~1的图像matplotlib也是可以接受的,关于这点,我们来看看文档是怎么说的, Elements of RGB and RGBA arrays represent pixels of an…
『PyTorch × TensorFlow』第十七弹_ResNet快速实现 要点 神经网络逐层加深有Degradiation问题,准确率先上升到饱和,再加深会下降,这不是过拟合,是测试集和训练集同时下降的 提出了残差结构,这个结构解决了深层网络训练误差反而提升的情况,使得网络理论上可以无限深 bottleneck网络结构,注意Channel维度变化: ,宛如一个中间细两端粗的瓶颈,所以称为“bottleneck”.这种结构相比VGG,早已经被证明是非常效的,能够更好的提取图像特征. 残差结构 截…
建议比对『MXNet』第七弹_多GPU并行程序设计 一.tensorflow GPU设置 GPU指定占用 gpu_options = tf.GPUOptions(per_process_gpu_memory_fraction=0.7) sess = tf.Session(config=tf.ConfigProto(gpu_options=gpu_options)) 上面分配给tensorflow的GPU显存大小为:GPU实际显存*0.7. GPU模式禁用 import os os.environ…
『教程』Batch Normalization 层介绍 基础知识 下面有莫凡的对于批处理的解释: fc_mean,fc_var = tf.nn.moments( Wx_plus_b, axes=[0], # 想要 normalize 的维度, [0] 代表 batch 维度 # 如果是图像数据, 可以传入 [0, 1, 2], 相当于求[batch, height, width] 的均值/方差, 注意不要加入 channel 维度 ) scale = tf.Variable(tf.ones([o…
LSTM神经元行为分析 LSTM 公式可以描述如下: itftotgtctht=sigmoid(Wixxt+Wihht−1+bi)=sigmoid(Wfxxt+Wfhht−1+bf)=sigmoid(Woxxt+Wohht−1+bo)=tanh(Wgxxt+Wghht−1+bg)=ft∘ct−1+it∘gt=ot∘ct 感觉比较新奇的一点是通过点乘矩阵使用‘门’控制数据流的取舍,和卷积神经网络的激活过程有一点点相似. 反向传播时,通过链式法则一个变量一个变量后推比较清晰. 反向传播时注意Ct节点…
Fork版本项目地址:SSD 参考自集智专栏 一.SSD基础 在分类器基础之上想要识别物体,实质就是 用分类器扫描整张图像,定位特征位置 .这里的关键就是用什么算法扫描,比如可以将图片分成若干网格,用分类器一个格子.一个格子扫描,这种方法有几个问题: 问题1 : 目标正好处在两个网格交界处,就会造成分类器的结果在两边都不足够显著,造成漏报(True Negative). 问题2 : 目标过大或过小,导致网格中结果不足够显著,造成漏报. 针对第一点,可以采用相互重叠的网格.比如一个网格大小是 32…
简书翻译原文 卷积层 卷积操作是使用一个二维的卷积核在一个批处理的图片上进行不断扫描.具体操作是将一个卷积核在每张图片上按照一个合适的尺寸在每个通道上面进行扫描.为了达到好的卷积效率,需要在不同的通道和不同的卷积核之间进行权衡. 三个卷积函数: conv2d: 任意的卷积核,能同时在不同的通道上面进行卷积操作. depthwise_conv2d: 卷积核能相互独立的在自己的通道上面进行卷积操作. separable_conv2d: 在纵深卷积 depthwise filter 之后进行逐点卷积…
Fork版本项目地址:SSD 作者使用了分布式训练的写法,这使得训练部分代码异常臃肿,我给出了部分注释.我对于多机分布式并不很熟,而且不是重点,所以不过多介绍,简单的给出一点训练中作者的优化手段,包含优化器选择之类的. 一.滑动平均 # =================================================================== # # Configure the moving averages. # ==========================…
一.误差值 度量两个张量或者一个张量和零之间的损失误差,这个可用于在一个回归任务或者用于正则的目的(权重衰减). l2_loss tf.nn.l2_loss(t, name=None) 解释:这个函数的作用是利用 L2 范数来计算张量的误差值,但是没有开方并且只取 L2 范数的值的一半,具体如下: output = sum(t ** 2) / 2 输入参数: t: 一个Tensor.数据类型必须是一下之一:float32,float64,int64,int32,uint8,int16,int8,…
SoftMax实际上是Logistic的推广,当分类数为2的时候会退化为Logistic分类 其计算公式和损失函数如下, 梯度如下, 1{条件} 表示True为1,False为0,在下图中亦即对于每个样本只有正确的分类才取1,对于损失函数实际上只有m个表达式(m个样本每个有一个正确的分类)相加, 对于梯度实际上是把我们以前的最后一层和分类层合并了: 第一步则和之前的求法类似,1-概率 & 0-概率组成向量,作为分类层的梯度,对batch数据实现的话就是建立一个(m,k)的01矩阵,直接点乘控制开…
sklearn线性回归模型 import numpy as np import matplotlib.pyplot as plt from sklearn import linear_model def get_data(): #506行,14列,最后一列为label,前面13列为参数 data_original = np.loadtxt('housing.data') scale_data = scale_n(data_original) np.random.shuffle(scale_dat…