人工智能
Vic·Tory
Make your hands dirty
展开
-
使用torchvision处理图片数据
torchvision是基于Pytorch处理图像视频的工具集,类似地还有处理自然语言的torchtext,处理音频的torchaudio等工具集。torchvision包含以下几个包:datasets : 下载或加载几个常用视觉数据集,例如MNIST、CIFARmodels : 流行的模型,例如 AlexNet, VGG, ResNet 和 Densenet 以及 与训练好的参数。transforms : 常用的图像操作,例如:随机切割,旋转,数据类型转换,图像到tensor ,numpy 数组原创 2020-10-24 10:50:17 · 3612 阅读 · 0 评论 -
自底向上构建知识图谱过程
知识图谱,是结构化的语义知识库,用于迅速描述物理世界中的概念及其相互关系,通过将数据粒度从document级别降到data级别,聚合大量知识,从而实现知识的快速响应和推理。当下知识图谱已在工业领域得到了广泛应用,如搜索领域的Google搜索、百度搜索,社交领域的领英经济图谱,企业信息领域的天眼查企业图谱等。640?wx_fmt=png在知识图谱技术发展初期,多数参与企业和科研机构主要采用自顶向下的方式构建基础知识库,如Freebase。随着自动知识抽取与加工技术的不断成熟,当前的知识图谱大多采用自底向转载 2020-09-07 22:36:23 · 1191 阅读 · 0 评论 -
Python使用multiprocessing库实现多进程
在Python中执行数据处理任务时,可能执行非常缓慢,这时可以将一个进程任务拆分为多个子进程,利用CPU的多个核心并发执行多个进程的方式来加速程序的执行。python中用于处理多进程相关的包为multiprocessing,通过Process、Queue、Pipe、Lock等类实现子进程、通信和共享数据、进程同步等功能。进程的创建和执行有两种创建子进程的方式,第一种是直接通过Process()创建子进程对象,第二种是通过继承multiprocessing.Process类的方式,先创建子进程类然后再实例原创 2020-06-23 12:06:35 · 1168 阅读 · 0 评论 -
优雅地使用PyCharm在Github上保存代码并在服务器上运行
我们在进行python开发的时候一般将代码托管在GitHub上,在本地进行编辑,然后遇到较大的处理任务需要在服务器上运行。这样代码-》编辑-》运行分别在三个端进行,那么应该如何流畅地在PyCharm使用这三个终端协同工作呢?使用Github进行代码托管启用Git:在使用PyCharm新建一个Python项目后点击最上面选项栏的VCS-> Enable Version Control Integration,在弹出的对话框中选择Git作为版本控制系统,这样就启动了Git。设置仓库:再次点击原创 2020-06-18 12:35:00 · 2708 阅读 · 0 评论 -
PyTorch使用embedding对特征向量进行嵌入
词向量嵌入在NLP中,一个最基本的问题就是如何在计算机中表示一个单词。一般我们用含有N个单词的词汇表来对单词进行编码,例如词表{“hello”: 0, “world”: 1, “nice”:2, “to”:3, “see”:4, “you”:5 }中只有6个单词,那么nice的编码就是2,但是一篇文章有成百上千甚至更多的词汇时,这就需要embedding操作将词向量进行压缩,用更小的维度去表示大量的词汇空间。根据语言学的单词分布假说,出现在相似语境中的词在语义上是相互关联的。如果仅仅使用一个数字来表示一原创 2020-06-11 18:01:14 · 7400 阅读 · 0 评论 -
Pytorch使用DataLoader批量加载数据
在进行模型训练时,需要把数据按照固定的形式分批次投喂给模型,在PyTorch中通过torch.utils.data库的`DataLoader`完成分批次返回数据。构造DataLoader首先需要一个`Dataset`数据源,Dataset完成数据的读取并可以返回单个数据,然后DataLoader在此基础上完成数据清洗、打乱等操作并按批次返回数据。原创 2020-06-11 10:18:12 · 10570 阅读 · 0 评论 -
使用Pandas处理.csv等表格文件
Pandas 是Python的核心数据分析支持库,提供了快速、灵活、明确的数据结构,旨在简单、直观地处理关系型、标记型数据。Pandas常用于处理带行列标签的矩阵数据、与 SQL 或 Excel 表类似的表格数据,应用于金融、统计、社会科学、工程等领域里的数据整理与清洗、数据分析与建模、数据可视化与制表等工作。数据类型:Pandas 不改变原始的输入数据,而是复制数据生成新的对象,有普通对象构成的一维数组成为Series,由Series构成的二维数组表称为DataFrame,其行被称为index,列为Co原创 2020-06-05 17:32:25 · 1063 阅读 · 0 评论 -
Python中使用NumPy进行数据处理
Numpy是一个常用的Python科学技术库,通过它可以快速对数组进行操作,包括形状操作、排序、选择、输入输出、离散傅立叶变换、基本线性代数,基本统计运算和随机模拟等。许多Python库和科学计算的软件包都使用Numpy数组作为操作对象,或者将传入的Python数组转化为Numpy数组,因此在Python中操作数据离不开Numpy。Numpy的核心是ndarray对象,由Python的n维数组封装而来,但通过C语言预编译相关的数组操作,因此比原生Python具有更高的执行效率,但仍然使用Python语言编原创 2020-06-01 12:05:24 · 4297 阅读 · 0 评论 -
Python通过argparse读取命令行参数
我们写好一个python模块供他人在命令行下调用时,有时需要在命令行指定参数传入到模块,通过argparse包可以便捷地接收参数。例如我用pytorch定义了一个神经网络模型,需要命令行在使用该模型时传入参数给初始化函数__init__()import torch.nn as nnclass Net(nn.Module): def __init__(self, kernel_size=3, num_filter=32, pooling_method='attention', num_fina原创 2020-05-29 12:25:01 · 1019 阅读 · 0 评论 -
Pytorch使用卷积神经网络对CIFAR10图片进行分类
如下所示为一个基本的卷积神经网络的模型,将图像输入之后经过卷积操作提取特征,再经过降采样操作后输出到下一层。经过多次多个卷积、池化层之后结果输出到全连接层,经过全连接映射到最终结果。一个神经网络的典型训练过程可以分为如下几步:定义神经网络,包含一些可学习参数(或者叫权重)将数据输入网络进行训练,并计算损失值将梯度反向传播给网络的参数,据此更新网络的权重,并再次训练定义网络如下所示为我们定义的神经网络类NeuralNet。首先它继承自父类nn.Module,从import可以看到从torch原创 2020-05-26 23:37:33 · 4175 阅读 · 0 评论 -
PyTorch的张量tensor和自动求导autograd
PyTorch是一个基于python的科学计算包,除了可以替代NumPy构建数组张量来利用GPU进行计算之外,还是一个高灵活性、速度快的深度学习平台张量张量(Tensor)实际上是一个多维数组,使用GPU可以加速张量的运算。创建tensor:可以通过torch.tensor()将普通数组转化为tensor,torch.empty()或rand()可以创建随机tensor,torch.zeros()、ones()创建数据都是0或1的tensor。t.clone()可以克隆一个张量,t.size()可以获原创 2020-05-18 12:17:30 · 1576 阅读 · 0 评论 -
Python通过ARIMA模型进行时间序列分析预测
时间序列分析预测就是在已有的和时间有关的数据序列的基础上构建其数据模型并预测其未来的数据,例如航空公司的一年内每日乘客数量、某个地区的人流量,这些数据往往具有周期性的规律。如下图所示,有的数据呈现出简单的周期性循环,有的呈现出周期性循环变化。 ARIMA(Autoregressive Integrated Moving Average model,差分整合移动平均自回归模型)不仅可以...原创 2020-03-18 17:30:17 · 25083 阅读 · 39 评论 -
在Python中使用Matplotlib绘制常见图表
Matplotlib 是一个非常强大的 Python 画图工具,通过绘制线图、散点图、等高线图、条形图、柱状图、3D 图形、甚至是图形动画等可以更加直观的呈现科学计算等遇到的大量数据。1、基本元素在matplotlib的层级结构中,最高层是由matplotlib.pyplot模块提供的“状态机环境”(state-machine environment),通过它来为当前维度绘制图像元素,例如...原创 2020-03-02 18:57:58 · 3390 阅读 · 0 评论 -
使用Python的PIL将数组输出图像
最近拿到一幅txt格式的城市地图,其格式为2400×2400的二维数组,每个数组的值为一个整数,从1到800,将城市划分为800个不同的区,一个区的整数值相同,直接查看txt文档不太容易,因此考虑将该txt利用python转化为图像。通常的彩色图像可以看作是三维数组,长×宽×通道,其中通道为每个像素点上用于表示颜色的数据,例如RGB三通道就是利用三个0~255的值来描述红、绿、蓝三个颜色。...原创 2020-02-26 13:21:23 · 9221 阅读 · 1 评论 -
利用Scrapy爬取豆瓣电影
1、概念Scrapy是一个为了爬取网站数据,提取结构性数据而编写的应用框架。 可以应用在包括数据挖掘,信息处理或存储历史数据等一系列的程序中。通过Python包管理工具可以很便捷地对scrapy进行安装,如果在安装中报错提示缺少依赖的包,那就通过pip安装所缺的包pip install scrapyscrapy的组成结构如下图所示引擎Scrapy Engine,用于中转调...原创 2019-11-22 21:23:27 · 9608 阅读 · 1 评论 -
Python面向对象编程
1、类的定义Python中类的定义与对象的初始化如下,python中所有类的父类是object,需要继承。由于Python是动态语言,因此可以直接为对象添加属性并赋值而不必在类定义中声明class Person(object): # 定义一个Person类 passp = Person() # 初始化一个Person对象p.name="xiaoming" ...原创 2019-11-19 18:07:19 · 539 阅读 · 0 评论 -
Python函数式编程
函数式编程就是一种抽象程度很高的编程范式,从计算机硬件->汇编语言->C语言->Python抽象程度越高、越贴近于计算,但执行效率也越低。纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的...原创 2019-11-18 19:40:54 · 355 阅读 · 0 评论 -
Pycharm中Python环境配置
1、问题的发现最近在用Pycharm下的命令行工具安装、运行jupyter notebook时kernal一直报错,报错最下面两行如下所示 import win32apiImportError: DLL load failed: 找不到指定的模块。经过网络搜索发现是无法正确解析python的路径,可能是python解释器的路径可能冲突,后来我发现有“两个”python路径,一...原创 2019-11-12 22:38:02 · 6354 阅读 · 0 评论 -
循环神经网络解决文本分类问题
1、概念1.1、循环神经网络循环神经网络(Recurrent Neural Network, RNN)是一类以序列数据为输入,在序列的演进方向进行递归且所有节点(循环单元)按链式连接的递归神经网络。卷积网络的输入只有输入数据X,而循环神经网络除了输入数据X之外,每一步的输出会作为下一步的输入,如此循环,并且每一次采用相同的激活函数和参数。在每次循环中,x0乘以系数U得到s0,再经过系数...原创 2019-09-26 11:30:14 · 6272 阅读 · 4 评论 -
通过VGG16模型实现图像风格转换
1、图像的风格转化卷积网络每一层的激活值可以看作一个分类器,多个分类器组成了图像在这一层的抽象表示,而且层数越深,越抽象内容特征:图片中存在的具体元素,图像输入到CNN后在某一层的激活值风格特征:绘制图片元素的风格,各个内容之间的共性,图像在CNN网络某一层激活值之间的关联风格转换:在一幅图片内容特征的基础上添加另一幅图片的风格特征从而生成一幅新的图片。在卷积模型训练中,通过输入固...原创 2019-09-19 11:14:10 · 2362 阅读 · 1 评论 -
卷积网络调参
1、调参技巧1.1、优化算法在神经网络训练中,我们希望每次训练使损失值更小,即通过优化算法调整参数使得模型向损失更小的方向发展。梯度下降算法:通过求偏导找到函数值减小的方向,从而使参数朝该方向移动其中Θ为需要调整的参数,L(x,y)为函数值,通过dL/dΘ求出使L减小的方向(即梯度),再与学习率α相乘,得到参数调整的值,再用当前的Θ减去该值,得到新的参数Θ。类似于一个下山的过程,Θ...原创 2019-09-09 11:01:59 · 1407 阅读 · 0 评论 -
Tensor FLow图像处理
在对图像进行深度学习时,有时可能图片的数量不足,或者希望网络进行更多的学习,这时可以对现有的图片数据进行处理使其变成一张新的图片,在此基础上进行学习,从而提高网络识别的准确率。1、图像解码显示利用matplot库可以方便简洁地在jupyter内对图片进行绘制与输出,首先通过tf.gfile打开图片文件,并利用函数tf.image.decode_jpeg将jpeg图片解码为三位矩阵,之后便可...原创 2019-09-08 12:54:38 · 737 阅读 · 0 评论 -
经典的卷积神经网络(VGG、ResNet、InceptionNet、MobileNet)
1、卷积网络发展卷积神经网络的起源是神经认知机模型(neocongnitron),之后在1989年出现了卷积神经与网络的模型。直到2012年随着一些技术的成熟带来的机遇,卷积神经网络迎来了历史性的突破,AlexNet获得ImageNet大赛冠军引起了人们的注意,之后的卷积网络朝着四个方向发展AlexNet:通过数据增强、Dropout来防止过拟合,所谓数据增强就是在原有的图片样本的基础...原创 2019-08-29 21:31:34 · 5752 阅读 · 0 评论 -
卷积神经网络识别CIFAR10图像集
1、基本概念卷积神经网络(Convolutional Neural Networks, CNN)是机器视觉中应用最为广泛的算法,主要用于图像分类、识别,其识别率比肉眼更高。对于全连接神经网络而言,当输入特征值、中间隐藏层数量增加时,会造成参数的总数明显增多,从而导致运算速度极具下降以及过拟合的问题。因此需要使用更为合理的模型来减少参数的个数,即卷积神经网络。过拟合问题是指当网络参数过多时,...原创 2019-07-30 10:27:46 · 7794 阅读 · 3 评论 -
利用全连接神经网络求解MNIST问题
1、单隐藏层神经网络人类的神经元在树突接受刺激信息后,经过细胞体处理,判断如果达到阈值,则将信息传递给下一个神经元或输出。类似地,神经元模型在输入层输入特征值x之后,与权重w相乘求和再加上b,经过激活函数判断后传递给下一层隐藏层或输出层。单神经元的模型只有一个求和节点(如左下图所示)。全连接神经网络(Full Connected Networks)如右下图所示,中间层有多个神经元,并且每层...原创 2019-07-14 22:11:41 · 1854 阅读 · 0 评论 -
利用逻辑回归模型解决MNIST手写数字识别问题
1、MNIST手写识别问题MNIST手写数字识别问题:输入黑白的手写阿拉伯数字,通过机器学习判断输入的是几。可以通过TensorFLow下载MNIST手写数据集,通过import引入MNIST数据集并进行读取,会自动从网上下载所需文件。%matplotlib inlineimport tensorflow as tfimport tensorflow.examples.tutoria...原创 2019-07-13 16:17:45 · 5286 阅读 · 1 评论 -
通过TensorFLow进行线性模型训练
1、相关概念例如要从一个线性分布的途中抽象出其y=kx+b的分布规律特征是输入变量,即简单线性回归中的 x 变量。简单的机器学习项目可能会使用单个特征,而比较复杂的机器学习项目可能会使用数百万个特征。标签是我们要预测的事物,即简单线性回归中的 y 变量。样本是指具体的数据实例。有标签样本是指具有{特征,标签}的数据,用于训练模型,总结规律。无标签样本只具有特征的数据x,通过模型...原创 2019-07-10 21:46:28 · 1187 阅读 · 0 评论 -
Tensor FLow简单使用
1、基础概念Tensor表示张量,是一种多维数组的数据结构。Flow代表流,是指张量之间通过计算而转换的过程。TensorFLow通过一个计算图的形式表示编程过程,数据在每个节点之间流动,经过节点加工之后流向下一个节点。计算图是一个有向图,其组成如下:节点:代表一个操作。边:代表节点之间的数据传递和控制依赖,其中实线代表两个节点之间的数据传递关系,虚线代表两个节点之间存在控制相关。张量...原创 2019-07-09 19:45:26 · 1013 阅读 · 0 评论 -
Python程序控制
1、换行在Python中默认换行结束一个语句而不是使用分号,而如果我们的语句无法在一行放下需要换行时,就需要在行尾使用\表示这一行没有结束。而在()、[]、{}内的逗号换行则不需要。str='Hello'+\ ' World'print(str) #不会报错,输出:Hello Worldlist1=[1,2, 3,4]print(list1) ...原创 2019-07-08 16:07:06 · 768 阅读 · 0 评论 -
Python基本数据类型
1、print函数在python3中print需要加括号,并且默认输出一行,如果不需要自动换行,需要指定结尾符end=' '。以下会在一行内输出“Hello World”print("Hello",end=' ')print("World")#输出:Hello Worldpython没有强制语句终止符,不需要在一行代码后加分号。当多条语句位于同一行时可以用分号分隔也可以用逗号...原创 2019-07-07 09:00:50 · 399 阅读 · 0 评论 -
利用Anaconda安装TensorFlow
相关概念1、人工智能:作为计算机的一个分支,目的在于利用机器模仿人类智能去完成一定的任务,从上世纪五十年代开始发展,经过多次起落,直到最近又一次掀起了人工智能的热潮。2、机器学习:作为实现人工智能的一种方法,在上世纪八十年代出现。研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,进而重新组织已有的知识结构使之不断改善自身的性能。与人类的学习过程类似,通过对机器模型输入大量的相关...原创 2019-07-06 09:37:04 · 12114 阅读 · 0 评论