NoRM

AI 基础:Scipy(科学计算库) 简易入门

空扰寡人 提交于 2020-12-28 11:38:40
0.导语 Scipy是一个用于数学、科学、工程领域的常用软件包,可以处理插值、积分、优化、图像处理、常微分方程数值解的求解、信号处理等问题。它用于有效计算Numpy矩阵,使Numpy和Scipy协同工作,高效解决问题。 Scipy是由针对特定任务的子模块组成: 在此之前,我已经写了以下几篇AI基础的快速入门,本篇文章讲解科学计算库Scipy快速入门: 已发布: AI 基础:Numpy 简易入门 AI 基础:Pandas 简易入门 AI基础:数据可视化简易入门(matplotlib和seaborn) 备注:本文代码可以在github下载 https://github.com/fengdu78/Data-Science-Notes/tree/master/4.scipy 1.SciPy-数值计算库 import numpy as np import pylab as pl import matplotlib as mpl mpl.rcParams['font.sans-serif'] = ['SimHei'] import scipy scipy.__version__#查看版本 '1.0.0' 常数和特殊函数 from scipy import constants as C print (C.c) # 真空中的光速 print (C.h) # 普朗克常数 299792458.0 6

【sklearn文本特征提取】词袋模型/稀疏表示/停用词/TF-IDF模型

痞子三分冷 提交于 2020-12-19 15:00:48
1. 词袋模型 (Bag of Words, BOW) 文本分析是机器学习算法的一个主要应用领域。然而,原始数据的这些符号序列不能直接提供给算法进行训练,因为大多数算法期望的是固定大小的数字特征向量,而不是可变长度的原始文本。 为了解决这个问题,scikit-learn提供了从文本内容中提取数字特征的常见方法,即: tokenizing: 标记字符串并为每个可能的token提供整数id,例如使用空白和标点作为token分隔符;(分词标记) counting: 统计每个文档中出现的token次数;(统计词频) normalizing: 通过减少大多数样本/文档中都会出现的一般性标记来进行标准化和加权。(标准化/归一化) 在此方案中,特征和样本定义如下: 每个独立token出现的频率(已标准化或未标准化)作为特征。 给定文档的所有token频率的向量作为多元样本。 因此,文本语料库可以由矩阵表示,每一行代表一个文本,每一列代表一个token(例如一个单词)。 向量化:将文本集合转换为数字特征向量的一般过程。 这种方法(tokenizing,counting和normalizing)称为“词袋”或“n-gram”模型。 即只通过单词频率来描述文档,而完全忽略文档中单词的相对位置信息。 2. 稀疏表示 由于大多数文本通常只使用语料库中的很小一部分单词,因此生成的矩阵将具有许多为零的特征值

2.1 摄像头V4L2驱动框架分析

点点圈 提交于 2020-12-07 05:43:01
学习目标:学习V4L2(V4L2:vidio for linux version 2)摄像头驱动框架,分析vivi.c(虚拟视频硬件相关)驱动源码程序,总结V4L2硬件相关的驱动的步骤; 一、V4L2架构 1. 字符类驱动 V4L2(V4L2:vidio for linux version 2)摄像头驱动属于字符类驱动, 对于 一般的字符类驱动程序 ,其编写步骤一般分为: 1)构造一个file_operations: 编写open=drv_open .read=drv_read 2)注册设备,告诉内核:register_chrdev(主设备号,名字,&file_operations) 3)入口函数:调用register_chrdev 4)出口函数:卸载 对于 复杂的字符类驱动程序 ,其程序是一种分层结构。例如LCD驱动程序。如下图所示。 --> 上层为核心层 (内核已经做好的),在fbmem.c中 ,主要的作用为: 1)构造file_operations(open read write 函数);2)注册;3)入口、出口。 --> 硬件相关层 (用户需要做的),供核心层的file_operations调用,主要完成: 1) 分配一个fb_info 结构体;2) 设置fb_info 结构体等;3) 注册;4) 硬件相关的操作。 2. V4L2驱动架构 由以上字符类设备驱动架构可知

神经网络架构搜索——可微分搜索(DARTS)

穿精又带淫゛_ 提交于 2020-12-05 11:13:11
神经网络架构搜索——可微分搜索(DARTS) 背景 神经网络架构搜索之前主流的方法主要包括:强化学习,进化学习。他们的搜索空间都是不可微的,Differentiable Architecture Search 这篇文章提出了一种可微的方法,可以 用梯度下降来解决架构搜索的问题 ,所以在搜索效率上比之前不可微的方法快几个数量级。可以这样通俗的理解:之前不可微的方法,相当于是你定义了一个搜索空间(比如3x3和5x5的卷积核),然后神经网络的每一层你可以从搜索空间中选一种构成一个神经网络,跑一下这个神经网络的训练结果,然后不断测试其他的神经网络组合。这种方法,本质上是从很多的组合当中尽快的搜索到效果很好的一种,但是这个过程是黑盒,需要有大量的验证过程,所以会很耗时。而这篇文章把 架构搜索融合到模型当中一起训练 。 算法核心思想 DARTS算法示意图 由上图可分析: (a) 定义了一个cell单元,可看成 有向无环图 ,里面4个node,node之间的edge代表可能的操作(如:3x3 sep 卷积),初始化时unknown。 (b) 把搜索空间 连续松弛化 ,每个edge看成是所有子操作的混合(softmax权值叠加)。 (c) 联合优化 ,更新子操作混合概率上的 edge超参 (即架构搜索任务)和 架构无关的 网络参数 。 (d) 优化完毕后,inference 直接

Wide and deep 模型【一】

江枫思渺然 提交于 2020-12-04 08:00:18
一、论文概述 Wide and deep 模型是 TensorFlow 在 2016 年 6 月左右发布的一类用于分类和回归的模型,并应用到了 Google Play 的应用推荐中 [1]。 wide and deep 模型的核心思想是结合线性模型的记忆能力(memorization)和 DNN 模型的泛化能力(generalization),在训练过程中同时优化 2 个模型的参数,从而达到整体模型的预测能力最优。 结合我们的产品应用场景同 Google Play 的推荐场景存在较多的类似之处,在经过调研和评估后,我们也将 wide and deep 模型应用到产品的推荐排序模型,并搭建了一套线下训练和线上预估的系统。鉴于网上对 wide and deep 模型的相关描述和讲解并不是特别多,我们将这段时间对 TensorFlow1.1 中该模型的调研和相关应用经验分享出来,希望对相关使用人士带来帮助。 wide and deep 模型的框架在原论文的图中进行了很好的概述。 wide 端 对应的是线性模型,输入特征可以是 连续特征,也可以是稀疏的离散特征 , 离散特征之间进行交叉后可以构成更高维的离散特征 。线性模型训练中通过 L1 正则化,能够很快收敛到有效的特征组合中。 deep 端 对应的是 DNN 模型,每个特征对应一个低维的实数向量,我们称之为特征的 embedding

哈工大硕士生实现11种数据降维算法,代码已开源!

▼魔方 西西 提交于 2020-12-03 14:37:37
点击“ 开发者技术前线 ”,选择“星标🔝” 在看|星标|留言, 真爱 来自:相约机器人 编辑:huber 大家好,我是huber! 网上关于各种降维算法的资料参差不齐,同时大部分不提供源代码。这里有个 GitHub 项目整理了使用 Python 实现了 11 种经典的数据抽取(数据降维)算法,包括:PCA、LDA、MDS、LLE、TSNE 等,并附有相关资料、展示效果;非常适合机器学习初学者和刚刚入坑数据挖掘的小伙伴。 01 为什么要进行数据降维? 所谓降维,即用一组个数为 d 的向量 Zi 来代表个数为 D 的向量 Xi 所包含的有用信息,其中 d<D;通俗来讲,即将高维度下降至低维度;将高维数据下降为低维数据。 通常,我们会发现大部分数据集的维度都会高达成百乃至上千,而经典的 MNIST,其维度都是 64。 MNIST 手写数字数据集 但在实际应用中,我们所用到的有用信息却并不需要那么高的维度,而且每增加一维所需的样本个数呈指数级增长,这可能会直接带来极大的「维数灾难」;而数据降维就可以实现: 使得数据集更易使用 确保变量之间彼此独立 降低算法计算运算成本 去除噪音 一旦我们能够正确处理这些信息,正确有效地进行降维,这将大大有助于减少计算量,进而提高机器运作效率。而数据降维,也常应用于文本处理、人脸识别、图片识别、自然语言处理等领域。 02 数据降维原理

Matlab入门基础

烈酒焚心 提交于 2020-11-27 06:10:46
matlab入门篇,一些基础用法记一下~ M语言是解释型语言 ​ who :查看当前变量 ​ whoes :查看当前变量及其维数、所占字节数等。 ​ clear : 清除所有变量 ​ clear + 变量名 : 清除该变量 ​ save 把当前的变量数据保存到默认命名的mat文件中(.mat文件,一种数据文件) ​ **save[**文件名][变量名][变量名][-append][-ascii] 数据类型 ​ 数值型 :双精度、单精度、整型 ​ a =1; 默认建立 double 数据类型 ​ b = uint8(a); b转换为uint8; ​ a = uint8(a); a转换为uint8. ​ 字符串 ​ 字符串和字符都是使用 单引号 ,获取ascii码值,使用double或者abs函数 ​ 如double('a'); ​ ascii转化为字符输出 ​ char函数:char(63);输出ascii码63代表的字符。 ​ 字符串去单引号 ​ str2num 、num2str、eval('t=1'):将字符串当成语句执行 ​ 结构体 ​ 结构体.成员名 = 表达式 // 可以一直建立... 不需要声明 ​ isstruct:是否是结构体。fieldnames、isfield函数、rmfield函数、getfield函数 ​ 单元 ​ 使用{}建立 : a = {1,'str',

ResNet网络的Pytorch实现

一曲冷凌霜 提交于 2020-11-27 04:25:47
1.文章原文地址 Deep Residual Learning for Image Recognition 2.文章摘要 神经网络的层次越深越难训练。我们提出了一个残差学习框架来简化网络的训练,这些网络比之前使用的网络都要深的多。我们明确地将层变为学习关于层输入的残差函数,而不是学习未参考的函数。我们提供了综合的实验证据来表明这个残差网络更容易优化,以及通过极大提升网络深度可以获得更好的准确率。在ImageNet数据集上,我们评估了残差网络,该网络有152层,层数是VGG网络的8倍,但是有更低的复杂度。几个残差网络的集成在ImageNet数据集上取得了3.57%错误率。这个结果在ILSVRC2015分类任务上取得第一名的成绩。我们也使用了100和1000层网络用在了数据集CIFAR-10上加以分析。 在许多视觉识别任务中,表征的深度是至关重要的。仅仅通过极端深的表征,我们在COCO目标检测数据集上得到了28%的相对提高。深度残差网络是我们提交到ILSVRC & COCO2015竞赛的网络基础,在这里我们获得了ImageNet检测任务、ImageNet定位任务,COCO检测任务和COCO分割任务的第一名。 3.网络结构 4.Pytorch实现 1 import torch.nn as nn 2 from torch.utils.model_zoo import load_url as

Java多线程

前提是你 提交于 2020-11-24 06:27:06
1. 基本的线程机制 实现Runnable接口,编写run()方法。 将Runnable对象提交给Thread构造器,start()方法来启动线程。 Thread.yield()静态方法:当前线程进入“就绪状态”,同等优先级的等待线程可以获取执行权,但不保证线程调度一定发生。 使用java.util.concurrent包中的Executor管理Thread对象。 ExecutorService exec = Executors.newCachedThreadPool(); ExecutorService exec = Executors.newFixedThreadPool(5); //固定线程数量 ExecutorService exec = Executors.newSingleThreadExecutor(); exec.execute(new Task()); exec.shutdown() SingleThreadExecutor使用场景:监听进入套接字链接的任务 shutdown()方法的调用可以防止新任务提交给Executor,shutdown()被调用之前的任务会被继续执行。 当任务中产生返回值时,实现Callable接口的call()方法 class TaskWithResult implements Callable<String> { public

线程池相关源码分析

心已入冬 提交于 2020-11-24 03:04:54
线程池系列源码分析 1.Thread源码分析 // Runnable -> run public class Thread implements Runnable { 1.字段 // 线程名称 private volatile String name; // 优先级 private int priority; // 线程 private Thread threadQ; // private long eetop; /* 是否单步执行此线程 */ private boolean single_step; /* 是否为守护线程 */ private boolean daemon = false; /* JVM 状态 */ private boolean stillborn = false; /* 将要运行什么 */ private Runnable target; /* 该线程的组 */ private ThreadGroup group; /* 此线程的上下文ClassLoader */ private ClassLoader contextClassLoader; /* 该线程的继承的AccessControlContext */ private AccessControlContext inheritedAccessControlContext; /* 用于自动编号匿名线程 */