在计算机中,没有任何数据类型是固定的,完全取决于如何看待这片数据的内存区域. 在numpy.ndarray.view中,提供对内存区域不同的切割方式,来完成数据类型的转换,而无须要对数据进行额外的copy,可以节约内存空间,我们可以将view看做对内存的展示方式. 如: import numpy as np x = np.arange(10, dtype=np.int) print('An integer array:', x) print ('An float array:', x.view(…
本节中的代码大量使用『TensorFlow』分布式训练_其一_逻辑梳理中介绍的概念,是成熟的多机分布式训练样例 一.基本概念 Cluster.Job.task概念:三者可以简单的看成是层次关系,task可以看成每台机器上的一个进程,多个task组成job:job又有:ps.worker两种,分别用于参数服务.计算服务,组成cluster. 同步更新 各个用于并行计算的电脑,计算完各自的batch 后,求取梯度值,把梯度值统一送到ps服务机器中,由ps服务机器求取梯度平均值,更新ps服务器上的参数…
『Re』知识工程作业_主体识别 一个比较完备的正则表达式介绍 几个基础函数 re.compile(pattern, flags=0) 将正则表达式模式编译成一个正则表达式对象,它可以用于匹配使用它的match ()和search ()等方法. 实际有两种使用方式: pattern.匹配方法(string) 或者 re.匹配方法(pattern,string) 使用或|来强化匹配规则: pattern_t = re.compile( '[0-9〇一二三四五六七八九]{4}年.{1,2}月.{1,3…
引.内存探究常用函数 id(),查询对象标识,通常返回的是对象的地址 sys.getsizeof(),返回的是 这个对象所占用的空间大小,对于数组来说,除了数组中每个值占用空间外,数组对象还会存储数组长度.数组类型等其他信息 numpy.ndarray.ctypes.data属性,返回numpy数组的内存位置 array.array.buffer_info(),数组对象的内存信息,返回元素起始地址和元素个数 help(array.buffer_info)'''buffer_info(self,…
numpy教程 防止输出省略号 import numpy as np np.set_printoptions(threshold=np.inf) 广播机制 numpy计算函数返回默认是一维行向量: import numpy as np a = [[1,1,1], [2,2,2], [3,3,3]] b = (np.sum(a,axis=1)) c = (np.sum(a,axis=0)) print(b,'\n',c) # [3 6 9] # [6 6 6] 所以广播之实际是高维对一维行向量的广…
建议比对『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…
『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…
『PyTorch』第四弹_通过LeNet初识pytorch神经网络_上 『PyTorch』第四弹_通过LeNet初识pytorch神经网络_下 在前面的例子中,基本上都是将每一层的输出直接作为下一层的输入,这种网络称为前馈传播网络(feedforward neural network).对于此类网络如果每次都写复杂的forward函数会有些麻烦,在此就有两种简化方式,ModuleList和Sequential.其中Sequential是一个特殊的module,它包含几个子Module,前向传播时…
垃圾回收 1.       .Net垃圾回收中涉及的名称 1.1.什么是代? 垃圾回收器为了提升性能使用了代的机制,共分为三代(Gen0.Gen1.Gen2).GC工作机制基于以下假设, 1)  对象越新,生存期越短 2)  对象越老,生存期越长 3)  回收堆的一部分比回收整个堆时间短 在应用程序的生命周期中,最近新建的对象被分配在第0代,在一次垃圾回收之后存活下来的进入下一代.这样可以使GC专注于回收最有可能存在更多可回收对象的第0代(最近分配的最有可能很快被释放) 1.2 什么时候发生垃圾…
内存原理介绍 1.       .Net应用程序中的内存 1.1.Net内存类型 Windows使用一个系统:虚拟寻址系统.这个系统的作用是将程序可用的内存地址映射到硬件内存中的实际地址上.其实际结果是在32位的Windows操作系统中,每个进程都可以使用4GB的内存,当然,64位机这个数字就更大了,在这4GB的内存中存储着可执行代码.代码加载的DLL和程序运行的所有变量,这4GB的内存成为虚拟地址空间或虚拟内存.在.Net中要使用多种类型的内存,包括:堆栈.非托管堆和托管堆. C#将数据分为2…
numpy.dtype用于自定义数据类型,实际是指导python程序存取内存数据时的解析方式. [注意],更改格式不能使用 array.dtype=int32 这样的硬性更改,会不改变内存直接该边解析过程,导致读取出问题,所以使用 array.astype(int32) ,这样才安全. 一.基本使用示例 // 定义一个数据类型,其中name为16为字符串,grades为2个float64的子数组 >>> dt = np.dtype([('name', np.str_, 16), ('gr…
1.tf.concat tf.concat的作用主要是将向量按指定维连起来,其余维度不变:而1.0版本以后,函数的用法变成: t1 = [[1, 2, 3], [4, 5, 6]] t2 = [[7, 8, 9], [10, 11, 12]] #按照第0维连接 tf.concat( [t1, t2],0) ==> [[1, 2, 3], [4, 5, 6], [7, 8, 9], [10, 11, 12]] #按照第1维连接 tf.concat([t1, t2],1) ==> [[1, 2,…
1.np.nditer():numpy迭代器 默认情况下,nditer将视待迭代遍历的数组为只读对象(read-only),为了在遍历数组的同时,实现对数组元素值得修改,必须指定op_flags=['readwrite']模式: np.nditer(a, op_flags=['readwrite']) 基本迭代参数flag=['f_index'/'mulit_index'],可输出自身坐标it.index/it.multi_index: a = np.arange(6).reshape(2,3)…
完整项目见:Github 完整项目中最终使用了ResNet进行分类,而卷积版本较本篇中结构为了提升训练效果也略有改动 本节主要介绍进阶的卷积神经网络设计相关,数据读入以及增强在下一节再与介绍 网络相关参数 输入24*24的图片 卷积->relu激活->最大池化->标准化 卷积->relu激活->标准化->最大池化 全连接:reshape尺寸->384 全连接:192->10 SoftMax 网络实现 git clone https://github.com/…
参考:http://www.jianshu.com/p/5ae644748f21# 几个数学概念: 标量(Scalar)是只有大小,没有方向的量,如1,2,3等 向量(Vector)是有大小和方向的量,其实就是一串数字,如(1,2) 矩阵(Matrix)是好几个向量拍成一排合并而成的一堆数字,如[1,2;3,4] 其实标量,向量,矩阵它们三个也是张量,标量是零维的张量,向量是一维的张量,矩阵是二维的张量,除此之外,张量不仅可以是三维的,还可以是四维的.五维的... 一点小注意: 1.由于torc…
部分代码单独测试: 这里实践了图像大小调整的代码,值得注意的是格式问题: 输入输出图像时一定要使用uint8编码, 但是数据处理过程中TF会自动把编码方式调整为float32,所以输入时没问题,输出时要手动转换回来!使用numpy.asarray(dtype)或者tf.image.convert_image_dtype(dtype)都行 都行 1 import numpy as np import tensorflow as tf import matplotlib.pyplot as plt…
Step1: 目标: 使用线性模拟器模拟指定的直线:y = 0.1*x + 0.3 代码: import tensorflow as tf import numpy as np import matplotlib.pyplot as plt def show_data(x,y,w,b): ''' 绘图函数 :param x: 横坐标散点 :param y: 纵坐标散点 :param w: 权重 :param b: 偏移量 :return: 无 ''' plt.figure() plt.scatt…
解压文件命令: with zipfile.ZipFile('../data/kaggle_cifar10/' + fin, 'r') as zin: zin.extractall('../data/kaggle_cifar10/') 拷贝文件命令: shutil.copy(原文件, 目标文件) 一.整理数据 我们有两个文件夹'../data/kaggle_cifar10/train'和'../data/kaggle_cifar10/test',一个记录了文件名和类别的索引文件 我们的目的是在新的…
MXNet是基础,Gluon是封装,两者犹如TensorFlow和Keras,不过得益于动态图机制,两者交互比TensorFlow和Keras要方便得多,其基础操作和pytorch极为相似,但是方便不少,有pytorch基础入门会很简单.注意和TensorFlow不同,MXNet的图片维度是 batch x channel x height x width . MXNet的API主要分为3层,最基础的时mxnet.ndarray(NDArray API),它以近似numpy数组的形式记录了诸多基…
数据读取部分实现 文中采用了tensorflow的从文件直接读取数据的方式,逻辑流程如下, 实现如下, # Author : Hellcat # Time : 2017/12/9 import os import tensorflow as tf IMAGE_SIZE = 24 NUM_CLASSES = 10 NUM_EXAMPLES_PER_EPOCH_FOR_TRAIN = 50000 NUM_EXAMPLES_PER_EPOCH_FOR_EVAL = 10000 def read_cif…
1,PS-worker架构 将模型维护和训练计算解耦合,将模型训练分为两个作业(job): 模型相关作业,模型参数存储.分发.汇总.更新,有由PS执行 训练相关作业,包含推理计算.梯度计算(正向/反向传播),由worker执行 该架构下,所有的woker共享PS上的参数,并按照相同的数据流图传播不同batch的数据,计算出不同的梯度,交由PS汇总.更新新的模型参数,大体逻辑如下: pull:各个woker根据数据流图拓扑结构从PS获取最新的模型参数 feed:各个worker根据定义的规则填充各…
What is the difference between flatten and ravel functions in numpy? 两者的功能是一致的,将多维数组降为一维,但是两者的区别是返回拷贝还是返回视图,np.flatten(0返回一份拷贝,对拷贝所做修改不会影响原始矩阵,而np.ravel()返回的是视图,修改时会影响原始矩阵 import numpy as np a = np.array([[1 , 2] , [3 , 4]]) b = a.flatten() print('b:…
一段简短的实现图像旋转的代码,使用了skimage库,据说和PIL相比,skimage对numpy等科学计算库的支持更好,这里是为了完成师兄给的帮他修改程序的任务,如果以后有需求的话可能会对python图像处理库做个梳理或者根据自己的需求做个筛选后深入了解一下. from skimage import io,transform import matplotlib.pyplot as plt '''图片旋转''' img2 = io.imread('./bg-body-3.jpg') img2 =…
对比TensorFlow和Pytorch的动静态图构建上的差异 静态图框架设计好了不能够修改,且定义静态图时需要使用新的特殊语法,这也意味着图设定时无法使用if.while.for-loop等结构,而是需要特殊的由框架专门设计的语法,在构建图时,我们需要考虑到所有的情况(即各个if分支图结构必须全部在图中,即使不一定会在每一次运行时使用到),使得静态图异常庞大占用过多显存. 以动态图没有这个顾虑,它兼容python的各种逻辑控制语法,最终创建的图取决于每次运行时的条件分支选择,下面我们对比一下T…
作业要求 环境路径 类似于这样的,一共50篇文档, 均为中文文档,是法院判决书的合集. 程序 程序如下,我完全使用正则表达式来实现功能, import re import glob import copy name_list = glob.glob('./*.txt') date_totul = [] indictee_totul = [] court_totul = [] procuratorate_totul = [] with open('./result.txt','a',encodin…
决策树这节中涉及到了很多pandas中的新的函数用法等,所以我单拿出来详细的理解一下这些pandas处理过程,进一步理解pandas背后的数据处理的手段原理. 决策树程序 数据载入 pd.read_csv()竟然可以直接请求URL... ... DataFrame.head()可以查看前面几行的数据,默认是5行 DataFrame.info()可以查看数据的统计情报 '''数据载入''' import pandas as pd titanic = pd.read_csv('http://bios…
生成网格坐标,一个很好的说明图如下: 虽然xy双坐标比较常用,但实际上其输入可以是任意多的数组,输出数组数目等于输出数组数目,且彼此间shape一致. 如果输入数组不是一维的,会拉伸为1维进行计算. 输出维度:[len(x2), len(x1), len(x3)……]…
多层感知机 输入->线性变换->Relu激活->线性变换->Softmax分类 多层感知机将mnist的结果提升到了98%左右的水平 知识点 过拟合:采用dropout解决,本质是bagging方法,相当于集成学习,注意dropout训练时设置为0~1的小数,测试时设置为1,不需要关闭节点 学习率难以设定:Adagrad等自适应学习率方法 深层网络梯度弥散:Relu激活取代sigmoid激活,不过输出层仍然使用sigmoid激活 对于ReLU激活函数,常用截断正态分布,避免0梯度和…
如果你可视化CNN的各层级结构,你会发现里面的每一层神经元的激活态都对应了一种特定的信息,越是底层的,就越接近画面的纹理信息,如同物品的材质. 越是上层的,就越接近实际内容(能说出来是个什么东西的那些信息),如同物品的种类. 网络结构 卷积层->池化层->卷积层->池化层->全连接层->Softmax分类器 卷积层激活函数使用relu 卷积层relu激活,偏置项使用极小值初始化,防止Relu出现死亡节点 全连接层激活函数使用relu 池化层模式使用SAME,所以stride取…
使用PIL.Image进行简单的图像处理 # coding=utf-8 from PIL import Image import matplotlib.pyplot as plt def show_img(img): plt.figure('Image') plt.imshow(img) plt.axis('off') # 关闭坐标轴 plt.show() '''载入&存储''' img1 = Image.open('./bg-body-3.jpg') img1.save('./保存的图片.pn…