精华内容
下载资源
问答
  • 深度学习模型tensor维度对不上怎么办
    2021-11-30 17:22:59

    深度学习模型tensor维度对不上是一个非常常见且有时比较难排查的现象。之所以难排查是因为报错信息和真实的错误原因之间的联系往往并不紧密,很难仅仅从PyTorch给出的数字上的信息判断错误在何处。

    笔者在一个训练好的模型上测试单个样本时出现了这个问题,一度排查了图片读取、图片通道数等问题,最后发现原因在于forward部分的代码是针对batch编写的,所以输入的格式是四维的BxCxHxW,而测试单个样本时输入是三维的,所以只需要一行img=img.unsqueeze(0)就解决了这个浪费了一上午 + 一下午的问题。。。

    更多相关内容
  • 下图为阿里中台架构(图片来自网络),其内置“大中台、小前台”的战略,其中包含了业务中台和数据中台的双中台配置。 ​ 从本质上来说,中台概念更多是一种方法论。它来告诉用户如何构建数据化服务体系,包括从...

    ​ 阿里中台的概念,可以说是近些年来的颇为火爆的概念。从十余年前的阿里在内部完成这一过程,并提出了“中台”概念;到后面中台概念逐步被外部接受并在2019年爆火兴起。数据中台爆火背后,既有传统企业转型焦虑的市场东风,又有阿里中台战略示范效应的推波助澜。下图为阿里中台架构(图片来自网络),其内置“大中台、小前台”的战略,其中包含了业务中台和数据中台的双中台配置。

    ​ 从本质上来说,中台概念更多是一种方法论。它来告诉用户如何构建数据化服务体系,包括从数据集成、数据建模、数据开发、数据共享到数据质量、数据治理等。用户可以阿里云或其他中台产品去快速构建,也完全可以自主完成这一过程。本文就尝试从数据建模为切入点,描述如何完成这一过程。文中部分内容来自《阿里中台》一书和阿里云官网文档。

    一、数据建模概述

    1.建模意义

    • 性能:良好的数据模型能帮助我们快速查询所需要的数据,减少数据的I/O吞吐。
    • 成本:良好的数据模型能极大地减少不必要的数据冗余,也能实现计算结果复用,极大地降低大数据系统中的存储和计算成本。
    • 效率:良好的数据模型能极大地改善用户使用数据的体验,提高使用数据的效率。
    • 质量:良好的数据模型能改善数据统计口径的不一致性,减少数据计算错误的可能性。

    2.模型方法论 - OLTP vs OLAP

    • OLTP系统面向的主要数据操作是随机读写,主要采用满足3NF的实体关系模型存储数据,从而在事务处理中解决数据的冗余和一致性问题
    • OLAP系统面向的主要数据操作是批量读写,事务处理中的一致性不是OLAP所关注的,其主要关注数据的整合,以及在一次性的复杂大数据查询和处理中的性能,因此它需要采用一些不同的数据建模方法。

    3.数仓建模方法论

    • ER模型

      其建模本质是是从全企业的高度设计一个3NF模型,用实体关系(ER)模型描述企业业务,在范式理论上符合3NF。

      • 3NF - OLAP vs OLTP

        OLAP中的3NF与OLTP系统中的3NF的区别在于,它是站在企业角度面向主题的抽象,而不是针对某个具体业务流程的实体对象关系的抽象。

      • 建模步骤

        1. 高层模型:一个高度抽象的模型,描述主要的主题以及主题间的关系,用于描述企业的业务总体概况。
        2. 中层模型:在高层模型的基础上,细化主题的数据项。
        3. 物理模型(也叫底层模型):在中层模型的基础上,考虑物理存储,同时基于性能和平台特点进行物理属性的设计,也可能做一些表的合并、分区的设计等。
    • 维度模型

    ​ 维度建模从分析决策的需求出发构建模型,为分析需求服务,因此它重点关注用户如何更快速地完成需求分析,同时具有较好的大规模复杂查询的响应性能。其典型的代表是星形模型,以及在一些特殊场景下使用的雪花模型。

    建模步骤:

    1. 选择业务过程。业务过程可以是单个业务事件,比如交易的支付、退款等;也可以是某个事件的状态,比如当前的账户余额等;还可以是一系列相关业务事件组成的业务流程,具体需要看我们分析的是某些事件发生情况,还是当前状态,或是事件流转效率。
    2. 选择粒度。在事件分析中,要预判所有分析需要细分的程度,从而决定选择的粒度。粒度是维度的一个组合。
    3. 识别维表。选择好粒度之后,就需要基于此粒度设计维表,包括维度属性,用于分析时进行分组和筛选。
    4. 选择事实。确定分析需要衡量的指标。

    二、维度建模规范

    下面以维度建模作为理论基础,构建总线矩阵、划分和定义数据域、业务过程、维度、度量/原子指标、修饰类型、修饰词、时间周期、派生指标。整体遵循下面的建模规范。

    1.概念层次

    在这里插入图片描述

    2.概念解读

    • 业务板块

      ​ 业务板块是逻辑空间的定义,是基于业务特征划分的命名空间

    • 数据域

      ​ 指面向业务分析,将业务过程或者维度进行抽象的集合。其中,业务过程可以概括为一个个不可拆分的行为事件。在业务过程之下,可以定义指标;维度是指度量的环境,如买家下单事件,买家是维度。为保障整个体系的生命力,数据域是需要抽象提炼,并且长期维护和更新的,但不轻易变动。在划分数据域时,既能涵盖当前所有的业务需求,又能在新业务进入时无影响地被包含进已有的数据域中和扩展新的数据域。

    • 业务过程

      ​ 指企业的业务活动事件,如下单、支付、退款都是业务过程。请注意,业务过程是一个不可拆分的行为事件,通俗地讲,业务过程就是企业活动中的事件。

    • 时间周期

      ​ 用来明确数据统计的时间范围或者时间点,如最近30天、自然周、截至当日等。

    • 修饰类型

      ​ 是对修饰词的一种抽象划分。修饰类型从属于某个业务域,如日志域的访问终端类型涵盖无线端、PC端等修饰词。

    • 修饰词

      ​ 指除了统计维度以外指标的业务场景限定抽象。修饰词隶属于一种修饰类型,如在日志域的访问终端类型下,有修饰词PC端、无线端等。

    • 度量/原子指标

      ​ 原子指标和度量含义相同,基于某一业务事件行为下的度量,是业务定义中不可再拆分的指标,具有明确业务含义的名词,如支付金额。

    • 维度

      ​ 维度是度量的环境,用来反映业务的一类属性,这类属性的集合构成一个维度,也可以称为实体对象。维度属于一个数据域,如地理维度(其中包括国家、地区、省以及城市等级别的内容)、时间维度(其中包括年、季、月、周、日等级别的内容)。

    • 维度属性

      ​ 维度属性隶属于一个维度,如地理维度里面的国家名称、国家ID、省份名称等都属于维度属性。

    • 派生指标

      ​ 派生指标=一个原子指标+多个修饰词(可选)+时间周期。可以理解为对原子指标业务统计范围的圈定。如原子指标:支付金额,最近l天海外买家支付金额则为派生指标(最近l天为时间周期,海外为修饰词,买家作为维度,而不作为修饰词)

    3.指标体系(指标组成体系之间关系)

    • 原子指标

      ​ 原子指标、修饰类型及修饰词,直接归属在业务过程下,其中修饰词继承修饰类型的数据域。

    • 派生指标

    在这里插入图片描述

    1. 派生指标由原子指标、时间周期修饰词、若干其他修饰词组合得到。
    2. 派生指标唯一归属一个原子指标 ,继承原子指标的数据域, 与修饰词的数据域无关。
    3. 派生指标可以选择多个修饰词,修饰词之间的关系为"或"或者"且",由具体的派生指标语义决定。
    4. 派生指标要继承原子指标的英文名、数据类型和算法要求。

    三、维度模型设计

    1.模型架构图

    在这里插入图片描述

    • 操作数据层(ODS)

      ​ 把操作系统数据几乎无处理地存放在数据仓库系统中。

      • 同步:结构化数据增量或全量同步到底层存储。
      • 结构化:非结构化(日志)结构化处理并存储至底层存储。
      • 累积历史、清洗:根据数据业务需求及稽核和审计要求保存历史数据、清洗数据。
    • 公共维度模型层(CDM)

      ​ 存放明细事实数据、维表数据及公共指标汇总数据,其中明细事实数据、维表数据一般根据ODS层数据加工生成;公共指标汇总数据一般根据维表数据和明细事实数据加工生成。CDM层又细分为DWD层和DWS层,分别是明细数据层和汇总数据层,采用维度模型方法作为理论基础,更多地采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联,提高明细数据表的易用性;同时在汇总数据层,加强指标的维度退化,采取更多的宽表化手段构建公共指标数据层,提升公共指标的复用性,减少重复加工。其主要功能如下:

      • 组合相关和相似数据:采用明细宽表,复用关联计算,减少数据扫描。
      • 公共指标统一加工:基于OneData体系构建命名规范、口径一致和算法统一的统计指标,为上层数据产品、应用和服务提供公共指标;建立逻辑汇总宽表。
      • 建立一致性维度:建立一致的数据分析维表,降低数据计算口径、算法不统一的风险。
    • 应用数据层(ADS)

      ​ 存放数据产品个性化的统计指标数据,根据CDM层与ODS层加工生成。

    四、模型实施过程

    在这里插入图片描述

    1.数据调研

    • 业务调研

      ​ 要构建大数据数据仓库,就需要了解各个业务领域、业务线的业务有什么共同点和不同点,以及各个业务线可以细分为哪几个业务模块,每个业务模块具体的业务流程又是怎样的。业务调研是否充分,将会直接决定数据仓库建设是否成功 。

    • 需求调研

      ​ 需求调研的途径有两种:一是根据与分析师、业务运营人员的沟通(邮件、IM)获知需求;二是对报表系统中现有的报表进行研究分析。通过需求调研分析后,就清楚数据要做成什么样的。很多时候,都是由具体的数据需求驱动数据仓库团队去了解业务系统的业务数据,这两者并没有严格的先后顺序。

    2.架构设计

    • 数据域划分

      ​ 数据域是指面向业务分析,将业务过程或者维度进行抽象的集合。业务过程可以概括为一个个不可拆分的行为事件,如下单、支付、退款。为保障整个体系的生命力,数据域需要抽象提炼,并且长期维护和更新,但不轻易变动。在划分数据域时,既能涵盖当前所有的业务需求,又能在新业务进入时无影响地被包含进已有的数据域中或者扩展新的数据域。

    • 构建总线矩阵

      ​ 在进行业务调研和需求调研后,就要构建总线矩阵了。需要做两件事情:明确每个数据域下有哪些业务过程;业务过程与哪些维度相关,并定义每个数据域下的业务过程和维度。

    在这里插入图片描述

    3.规范定义

    ​ 规范定义主要定义指标体系,包括原子指标、修饰词、时间周期和派生指标。上面也做了详细说明,此处不做展开。

    规范定义主要定义指标体系,包括原子指标、修饰词、时间周期和派生指标。上面也做了详细说明,此处不做展开。

    4.模型定义

    模型设计主要包括维度及属性的规范定义,维表、明细事实表和汇总事实表的模型设计。

    1)维度设计

    ​ 维度是维度建模的基础和灵魂。在维度建模中,将度量称为"事实",将环境描述为"维度",维度是用于分析事实所需要的多样环境。维度所包含的表示维度的列,称为维度属性。维度属性是查询约束条件、分组和报表标签生成的基本来源,是数据易用性的关键。维度的作用一般是查询约束、分类汇总以及排序等。

    ​ 维度的设计过程就是确定维度属性的过程,如何生成维度属性,以及所生成的维度属性的优劣,决定了维度使用的方便性,成为数据仓库易用性的关键。正如Kimball所说的,数据仓库的能力直接与维度属性的质量和深度成正比。设计步骤:

    1. 第一步:选择维度或新建维度

      作为维度建模的核心,在企业级数据仓库中必须保证维度的唯一性。以淘宝商品维度为例,有且只允许有一个维度定义。

    2. 第二步:确定主维表

      此处的主维表一般是ODS表,直接与业务系统同步。

    3. 第三步:确定相关维表

      数据仓库是业务源系统的数据整合,不同业务系统或者同一业务系统中的表之间存在关联性。根据对业务的梳理,确定哪些表和主维表存在关联关系,并选择其中的某些表用于生成维度属性

    4. 第四步:确定维度属性

      主要包括两个阶段,其中第一个阶段是从主维表中选择维度属性或生成新的维度属性;第二个阶段是从相关维表中选择维度属性或生成新的维度属性。

    2)事实表设计

    ​ 事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计,通过获取描述业务过程的度量来表达业务过程,包含了引用的维度和与业务过程有关的度量。

    1. 粒度

      事实表中一条记录所表达的业务细节程度被称为粒度。

    2. 事实类型

      作为度量业务过程的事实,一般为整型或浮点型的十进制数值,有可加性、半可加性和不可加性三种类型。

      • 可加性事实,是指可以按照与事实表关联的任意维度进行汇总。
      • 半可加性事实,只能按照特定维度汇总,不能对所有维度汇总,比如库存可以按照地点和商品进行汇总,而按时间维度把一年中每个月的库存累加起来则毫无意义。
      • 不可加性事实,还有一种度量完全不具备可加性,比如比率型事实。对于不可加性事实可分解为可加的组件来实现聚集。
    3. 事实表类型

    在这里插入图片描述

    3)事务事实表

    ​ 用来描述业务过程,跟踪空间或时间上某点的度量事件,保存的是最原子的数据,也称为"原子事实表"。事务事实表中的数据在事务事件发生后产生,数据的粒度通常是每个事务一条记录。一旦事务被提交,事实表数据被插入,数据就不能更改,其更新方式为增量更新。

    4)周期快照事实表

    ​ 以具有规律性的、可预见的时间间隔记录事实,时间间隔如每天、每月、每年等。周期快照事实表的日期维度通常记录时间段的终止日,记录的事实是这个时间段内一些聚集事实值或状态度量。事实表的数据一旦插入就不能更改,其更新方式为增量更新。

    5)累积快照事实表

    ​ 用来表述过程开始和结束之间的关键步骤事件,覆盖过程的整个生命周期,通常具有多个日期字段来记录关键时间点,当过程随着生命周期不断变化时,记录也会随着过程的变化而被修改。另外,它还会有一个用于指示最后更新日期的附加日期字段。由于事实表中许多日期在首次加载时是不知道的,而且这类事实表在数据加载完成后,可以对其数据进行更新,来补充业务状态变更时的日期信息和事实。

    五、数据展示层设计

    数据展示层,是需要根据用户个性化需求来设计。在稳固的底层模型的支持下,上层展示层更为强调灵活组合,快速响应用户前端交互。经常采用的是“大宽表”的设计,避免关联,加速显示。

    1.示例:宽表

    在这里插入图片描述

    2.示例:数据可视化

    在这里插入图片描述

    • 图中的类别、子类别是层次维度的体现。
    • 图中的销售额合计,是派生指标的体现。

    转载自:https://mp.weixin.qq.com/s/c9qouM2ay9pEejZc1YMRAw

    展开全文
  • 只需双击输入面板上的PSNR 并浏览要计算 PSNR 的两个图像。
  • 问题描述:在使用预测模型进行预测图片的时候,图片也经过预处理,但是在执行预测的时出现卷积层输入的形状不为4维或者5维的错误。 报错信息: /usr/local/lib/python3.5/dist-packages/paddle/fluid/contrib/...
    • 问题描述:在使用预测模型进行预测图片的时候,图片也经过预处理,但是在执行预测的时出现卷积层输入的形状不为4维或者5维的错误。

    • 报错信息:

    /usr/local/lib/python3.5/dist-packages/paddle/fluid/contrib/inferencer.py in infer(self, inputs, return_numpy)
        102             results = self.exe.run(feed=inputs,
        103                                    fetch_list=[self.predict_var.name],
    --> 104                                    return_numpy=return_numpy)
        105 
        106         return results
    
    /usr/local/lib/python3.5/dist-packages/paddle/fluid/executor.py in run(self, program, feed, fetch_list, feed_var_name, fetch_var_name, scope, return_numpy, use_program_cache)
        468 
        469         self._feed_data(program, feed, feed_var_name, scope)
    --> 470         self.executor.run(program.desc, scope, 0, True, True)
        471         outs = self._fetch_data(fetch_list, fetch_var_name, scope)
        472         if return_numpy:
    
    EnforceNotMet: Conv intput should be 4-D or 5-D tensor. at [/paddle/paddle/fluid/operators/conv_op.cc:47]
    PaddlePaddle Call Stacks: 
    
    • 问题复现:使用预测模型来预测图片,图片进下面的代码进行预处理,先是对图片进行压缩统一大小,然后再对图片转换成向量,接着改变图片的顺序,最后进行归一化。但是在执行预测的时候就会出现。错误代码如下:
    def load_image(file):
        im = Image.open(file)
        im = im.resize((32, 32), Image.ANTIALIAS)
        im = np.array(im).astype(np.float32)
        im = im.transpose((2, 0, 1))  ## CHW
        im = im / 255.0
        return im
    
    • 解决问题:PaddlePaddle最后读取预测的数据应该是有4个维度的,分别是Batch大小、图片的通道数、图片的宽、图片的高。错误的代码是因为没有对图片数据加一个Batch的维度。所以最后需要使用numpy.expand_dims(im, axis=0)需要进行修改图片的维度。
    def load_image(file):
        im = Image.open(file)
        im = im.resize((32, 32), Image.ANTIALIAS)
        im = np.array(im).astype(np.float32)
        im = im.transpose((2, 0, 1))  ## CHW
        im = im / 255.0
        im = numpy.expand_dims(im, axis=0)
        return im
    
    • 问题拓展:不仅在预测的是需要设置数据的Batch大小,在训练的是也需要设置图片的Batch的大小,在使用接口fluid.layers.data定义输入层时,shape参数设置也应该要有数据的Batch大小的,但是不用我们手动设置,PaddlePaddle可以自动设置。
    展开全文
  • 维度建模方法论

    千次阅读 2022-02-11 15:20:21
    维度建模方法 一、前言 本人学习《数仓工具箱》的学习总结,纯学习分享,供大家参考。 二、经典数仓架构理论 围绕着维度建模,那就不得不了解,早期的数据仓库构架方法。这里介绍一下两个经典的数仓架构理论。 2.1...

    维度建模方法

    一、前言

    本人学习《数仓工具箱》的学习总结,纯学习分享,供大家参考。


    二、经典数仓架构理论

    围绕着维度建模,那就不得不了解,早期的数据仓库构架方法。这里介绍一下两个经典的数仓架构理论。

    2.1、Kimball模式

    在这里插入图片描述

    Kimball 模式从流程上看是是自顶向下的,即从数据集市到数据仓库再到数据源(先有数据集市再有数据仓库)的一种敏捷开发方法。对于Kimball模式,数据源每每是给定的若干个数据库表,数据较为稳定但是数据之间的关联关系比较复杂,须要从这些OLTP中产生的事务型数据结构抽取出分析型数据结构,再放入数据集市中方便下一步的BI与决策支持。所以KimBall是根据需求来确定需要开发ETL哪些数据。

    2.2、Inmon模式

    在这里插入图片描述

    Inmon 模式从流程上看是自底向上的,即从数据源到数据仓库再到数据集市的(先有数据仓库再有数据市场)一种瀑布流开发方法。对于Inmon模式,数据源每每是异构的。这里主要的数据处理工作集中在对异构数据的清洗,包括数据类型检验,数据值范围检验以及其余一些复杂规则。在这种场景下,数据没法从stage层直接输出到dm层,必须先经过ETL将数据的格式清洗后放入dw层,再从dw层选择须要的数据组合输出到dm层。在Inmon模式中,并不强调事实表和维度表的概念,由于数据源变化的可能性较大,须要更增强调数据的清洗工作,从中抽取实体-关系。immon是将整个数据仓库规划好,统一按照范式建模进行开发。

    参考:深入对比数据仓库模式:Kimball vs Inmon

    三、维度建模步骤

    3.1、设计企业服务总线

    需要调查业务过程以及业务过程所涉及的公共维度。比如零售商从订单到库存到零售这些业务过程中所涉及到的公共维度用一个矩阵进行统计,梳理这些的过程中,也对总体业务流程有概要的了解。

    在这里插入图片描述

    3.2、选择业务过程

    业务过程通常用行为动词表示,如:获取订单、开具发票、接收付款,注册账号、处理索赔等。维度建模是紧贴业务的,所以必须以业务为根基进行建模,那么选择业务过程,顾名思义就是在整个业务流程中选取我们需要建模的业务,根据运营提供的需求及日后的易扩展性等进行选择业务。比如商城,整个商城流程分为商家端,用户端,平台端,运营需求是总订单量,订单人数,及用户的购买情况等,我们选择业务过程就选择用户端的数据,商家及平台端暂不考虑。业务选择非常重要,因为后面所有的步骤都是基于此业务数据展开的。

    3.3、声明粒度

    先举个例子:对于用户来说,一个用户有一个身份证号,一个户籍地址,多个手机号,多张银行卡,那么与用户粒度相同的粒度属性有身份证粒度,户籍地址粒度,比用户粒度更细的粒度有手机号粒度,银行卡粒度,存在一对一的关系就是相同粒度。为什么要提相同粒度呢,因为维度建模中要求我们,在同一事实表中,必须具有相同的粒度,同一事实表中不要混用多种不同的粒度,不同的粒度数据建立不同的事实表。并且从给定的业务过程获取数据时,强烈建议从关注原子粒度开始设计,也就是从最细粒度开始,因为原子粒度能够承受无法预期的用户查询。但是上卷汇总粒度对查询性能的提升很重要的,所以对于有明确需求的数据,我们建立针对需求的上卷汇总粒度,对需求不明朗的数据我们建立原子粒度。

    3.4、确认维度

    维度表是作为业务分析的入口和描述性标识,所以也被称为数据仓库的“灵魂”。在一堆的数据中怎么确认哪些是维度属性呢,如果该列是对具体值的描述,是一个文本或常量,某一约束和行标识的参与者,此时该属性往往是维度属性,牢牢掌握事实表的粒度,就能将所有可能存在的维度区分开,并且要确保维度表中不能出现重复数据,应使维度主键唯一

    3.5、确认事实

    可以通过回答“业务过程的度量是什么?”这一问题来确定事实。事实表是用来度量的,基本上都以数量值表示,事实表每行的数据是一个特定级别的细节数据,称为粒度。维度建模的核心原则之一是同一事实表中的所有度量必须具有相同的粒度。这样能确保不会出现重复计算度量的问题。有时候往往不能确定该列数据是事实属性还是维度属性。记住最实用的事实就是数值类型和可加类事实。所以可以通过分析该列是否是一种包含多个值并作为计算的参与者的度量,这种情况下该列往往是事实。

    四、维度建模设计技巧

    4.1、使用代理键代替自然键作为维度表主键

    自然键:就是充当主键的字段本身具有一定的含义,是构成记录的组成部分,比如学生的学号,除了充当主键之外,同时也是学生记录的重要组成部分。

    代理键:就是充当主键的字段本身不具有业务意义,只具有主键作用,比如自动增长的ID。

    使用代理键的优点:

    • 为数据仓库缓冲源系统的变化。例如:账号闲置一年就会重新分配给新用户,如果用账号作为数据主键,则原账号数据就会被覆盖丢失;如果用代理键作为维度主键,那么可以对账号的变化赋予新的代理键以作区分。
    • 集成多个源系统。可以通过引用映射表将多个自然键连接成一个公共的代理键。

    4.2、缓慢变化维度处理方法

    类型0:不做任何处理
    案例:用户在使用产品之前是有注册动作的,大部分产品都会让用户填写出生年月之类的属性信息,当然用户有可能是瞎写的,在未来的某个时间点可能想把这个出生信息给重新修改,站在分析的角度上,我们通常是使用第一次注册的数据,或者是使用身份证上的信息为准。那么对于这种持久型的标识符通常是不做任何处理的。
    适用场景:这种处理手段适用于我们只关心第一次维度属性值的场景下,后续变化的值都认为是无效的。
    类型1:重写覆盖
    案例:在实际的业务过程中,用户是会更换手机号或者更改用户名的,那么站在分析的角度上来看,通常是只关心最新的数据,所以针对这种场景,我们可以采取覆盖的方式来解决,比如小明把用户名称改为小小明,那么从数据角度上来看的就变成了如下的方式:

    在这里插入图片描述

    适用场景:这适用于只关心最新数据的场景下,不需要关心属性历史信息变化;不用投入过多的etl成本,维护也比较简单
    类型2:增加新行
    案例:虽然重写覆盖的手段比较简单,但是其缺点也很明显,那就是我们没有办法分析历史变化的数据了,特别是像手机号这类的数据变更,是完全有必要把每次的变更记录保留下来,特别是对于风控业务,利用手机号通过图谱关系结合欺诈规则来拦截羊毛党、团伙欺诈等黑产。针对这类场景,我们可以采用新增记录的方式来解决。如下图所示,通过增加新行并分配新的代理键来保留维度的历史变化数据。

    在这里插入图片描述

    适用场景:该方案也是比较简单的一种处理方式,而且保留了历史信息变化的数据;但是该种方式在每变更一次就会新增一条记录,整个维表就会随着时间推移其数据也会越发膨胀,只要有一个维度发生变化,都会新增一行记录(当然一个维表里可以只对某几个属性变更采用类型2)
    类型3:增加新列
    案例:维度属性每次发生一次变更,我们通过新增一条记录的方式来保留历史数据,但其缺点也比较明显。对于数据量比较大的维度表来说,采用类型2就有些笨拙了,特别是对于属性指标分组的分析场景下就不太适用新增行记录的方式了。比如按照性别分组来分析活跃占比的时候,如果突然有一天的占比和历史分析结果相差比较大的时候,那么就需要定位判断是否有大量的属性变更的情况存在,针对这种情况可以采用新增列的方式来保留上一个变更版本的记录。如下图所示:

    在这里插入图片描述

    适用场景:避免了因为信息变化而新增记录造成数据膨胀的情况;而且可以允许保留一部分版本的变化,很多书籍中大多是新增一个当前列和上一次变化的列值,当然也可以多搞几个字段来保存多个版本,但不会把所有版本的数据都保留下来,而且如果维度信息比较多的话,那么字段就会变得非常多(比如表里有5个维度属性,需要保留3个版本,那这个表的字段数就会扩充到15个),所以这种处理手段很少用到,只适用于可以预测到变化而且不会分析过多版本的场景下(比如本案例中的男女占比分析)。
    类型4:微型维度
    案例:微型维度大概意思就是说对于变化比较快的维度(这个时候已经超出了缓慢变化的定义了)抽离出来形成一张单独的维表,那么抽离出来的这个维度表就被称为“微型维度”,说白了其实就是从大维表里把几个变化比较快的维度拿出来形成一个小的维度表(相对于原有维度来说确实是一个小维表)。比如在画像的场景中,我们通常会基于用户的收入属性运用一些规则定一个收入级别,并对用户打上一些标签,比如用户是属于高收入,高消费,还是属于低收入,高消费人群。通常收入属性可以说是变化比较频繁的(不要抬扛,特别是像拿提成的岗位收入本身就不是固定的),如果直接放在基维表(基础维度表,可以理解成主维表)的话就会不太合适了。所以采用微型维度,将收入级别这类变化比较快的维度抽离出来单独搞一个小型维。这样一搞的话,就解决了基维表数据一旦变化就会新增记录的问题了。因为微型维度是框定了范围,在范围内的变化,都对应的同一个范围值,比如小明的年龄从20岁变化到22岁对应的微型维度代理键还是03。而且将维度维度代理键代替年龄范围、收入水平、消费水平三个快速变化的维度,在原有维表上减属性。
    ![在这里插入图片描述](https://img-blog.csdnimg.cn/f8918b4397f648f7a7fb52ac03ec7e7d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5riF6aOO5ZKM5pyI5piO,size_20,color_FFFFFF,t_70,g_se,x_16#pic_center)
    适用场景:维度快速变化的情况,需要维护主表中对应的微型维度代理键

    参考:建模之旅:你以为的SCD

    4.3、树状结构数据处理

    有些涉及多层级数据处理,比如对财务各级组织的相关指标计算。这就需对多层级数据处理。如下图,模拟的是集团中的组织架构,举例:怎么计算7和7所有的下属机构对应的月营收收入?

    在这里插入图片描述

    这里可以建立多层级组织关系桥接表,如下图。通过这个桥接表来筛选出7的所有下属机构。

    在这里插入图片描述

    展开全文
  • 在GeeksforGeeks上看到了几篇关于数据仓库架构、维度数据建模的文章,进行翻译整理并加入了一些自己的理解,输出了这篇文章。 一、数据仓库架构 数据仓库是将不同来源的数据在统一的模式下组织起来的异构集合。构建...
  • 语言模型简单来说就是一串词序列的概率分布 生成式聊天机器人中常见的是seq2seq模型 是一个encoder和decoder的结构 Seq2Seq模型 起源和发展 从RNN的结构说起 Seq2Seq模型 ...
  • 上篇文章线性回归当中,输出的是1维数据,在Softmax回归中,输出的是多维的数据,具体来说就是图片的类别,这个类别可能是猫、狗等。如果结果标签有10类,那么W WW矩阵的大小应该为784*10。 以输入维度4,输出维度3...
  • 事实表与维度

    千次阅读 2021-08-26 15:49:19
    1.5、事实表的优点二、维度表2.1、维度表类型2.1.1、SCD(缓慢变化维)2.1.2、一致维度2.1.3、垃圾维度2.1.4、退化维度2.1.5、角色扮演维度2.2、它在数据仓库中是如何工作的?2.3、维度表的好处三、维度表 vs 事实表...
  • 1 ResNet模型 在深度学习领域中,模型越深意味着拟合能力越强,出现过拟合问题是正常的,训练误差越来越大却是不正常的。 1.1 训练误差越来越大的原因 在反向传播中,每一层的梯度都是在上一层的基础上计算的。...
  • 维度模型中的表数据 (数据特征) 可能有冗余, 但查询时一般只需要进行事实表和维度表进行 join, 不用 join 太多表, 查询性能更好. 在维度建模的基础上又分为三种模型:星型模型、雪花模型、星座模型。 但生产中事实...
  • 1 Inception系列模型 Incepton系列模型包括V1、V2、V3、V4等版本,主要解决深层网络的三个问题: 训练数据集有限,参数太多,容易过拟合; 网络越大,计算复杂度越大,难以应用; 网络越深,梯度越往后传,越...
  • ImageNet数据集一共有1000...torchvision库是非常强大的yTorch视觉处理库,包括分类、目标检测、语义分割(Semantic Segmentation)等多中计算机视觉任务的预训练模型,还包括图片处理、错点计算等很多基础工具。 ...
  • opencv读取彩色图片:BGR PIL.Image读取彩色图片:RGB pytorch tensor matrix: (N, C, H, W) caffe中imagedata layer彩色图片:BGR caffe matrix: (N, C, H, W) 常用: from PIL import Image Image.open(img...
  • tensor维度变换

    千次阅读 2020-12-23 14:48:38
    维度变换是tensorflow中的重要模块之一,前面mnist实战模块我们使用了图片数据的压平操作,它就是维度变换的应用之一。在详解维度变换的方法之前,这里先介绍一下View(视图)的概念。所谓View,简单的可以理解成我们...
  • 扩展单张图片维度 import cv2 import torch image = cv2.imread(img_path) image = torch.tensor(image) print(image.size()) img = image.view(1, *image.size()) print(img.size()) # output: # torch.Size([h,...
  • 卷积过程是CNN的核心,准确推导各卷积层输出的维度是实现CNN的基础,下面总结一下CNN卷积过程中输出特征图的尺寸与维度变化规律.  CNN常以图像作为输入,例如VGG的输入图像格式就为224*224*3,其中224*224是图像的...
  • 前段时间在训练模型的时候,发现当训练集的数量过大,并且输入的图片维度过大时,很容易就超内存了,举个简单例子,如果我们有20000个样本,输入图片维度是224x224x3,用float32存储,那么如果我们一次性将全部...
  • 数字化成熟度评估模型一文读尽

    千次阅读 2022-03-03 16:26:53
    虽然纯“打分”的数字化成熟度评分对企业并没有太大帮助,但理解这些模型的设计思想对于我们理解数字化转型很有价值。 正文开始 本文一共提供了CMM、DMM、DCMM、DCAM、MD3M、DataFlux、IBMMMI、DSMM、IOMM、中新联团...
  • 图片路径: img_path = ‘./datasets/proposal-flow-pascal/PF-dataset-PASCAL/JPEGImages/2009_003820.jpg’ 读取图片的2种不同方法: from PIL import Image image = Image.open(img_path) from skimage import ...
  • 使用keras内置的模型进行图片预测

    千次阅读 热门讨论 2018-10-03 13:28:19
    keras 模块里面为我们提供了一个预训练好的模型,也就是开箱即可使用的图像识别模型 趁着国庆假期有时间我们就来看看这个预训练模型如何使用吧 可用的模型有哪些? 根据官方文档目前可用的模型大概有如下几个...
  • Keras模型中数据维度报错

    千次阅读 2021-04-27 14:57:55
    使用深度学习Keras的Sequential框架搭建神经网路模型,关于数据维度报错问题 ValueError: Input 0 of layer dense is incompatible with the layer: expected axis -1 of input shape to have value
  • 图像情感分析模型是基于卷积神经网络建立的,卷积神经网络的构建用了keras库,具体代码实现以及代码运行在下一篇贴出。 模型包括3个卷积层、2个池化层、4个激活函数层、2个Dropout层、2个全连接层、1个Flatten层和...
  • XX企业在提供售后服务如安装、检测、维修等上门服务时,服务人员需要使用终端将产品包含机编码的部分拍照上传系统,并且终端会在图片上增加工单号、拍照时间和拍摄地址信息的水印。 在这个过程中,发现一种情况,...
  • 一、环境Ubuntu 16.04keras 2.1.3二、训练数据时报错:ValueError: Error when checking target: expected model_2 to have shape (None, 3) but got array with shape (4, 1原因:数组的维度不正确。三、解决思路一...
  • 本文以[CIFAR-10](https://www.cs.toronto.edu/~kriz/cifar.html)为数据集,基于Tensorflow介绍了CNN(卷积神经网络)图像分类模型的构建过程,着重分析了在建模...以及经过运算后图像shape、数据维度等参数的变化情况。
  • 利用pytorch训练好的模型测试单张图片

    千次阅读 多人点赞 2020-10-11 16:38:04
    pytorch网络输入图片的格式是[B,C,H,W],分别为批大小(batchsize),图片通道数(channel),图片高(height),图片宽(width)。 图片读取方式主要有两种:(1)通过PIL进行读取;(2)通过opencv进行读取。分别进行...
  • 机器学习中的维度灾难

    万次阅读 多人点赞 2017-05-11 20:31:39
    一、介绍本篇文章,我们将讨论所谓的“维度灾难”,并解释在设计一个分类器时它为何如此重要。在下面几节中我将对这个概念进行直观的解释,并通过一个由于维度灾难导致的过拟合的例子来讲解。考虑这样一个例子,我们...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 70,188
精华内容 28,075
关键字:

维度模型图片