标签: inference

Scala类型(推理)问题?

我正在使用Jersey JAX-RS参考实现在Scala中开发REST Web服务,我遇到了一个奇怪的错误.

我正在尝试使用ContentDisposition.ContentDispositionBuilder创建ContentDisposition对象.

ContentDisposition.ContentDispositionBuilder有两种类型T extends ContentDisposition.ContentDispositionBuilderV extends ContentDisposition.该方法typeContentDisposition返回建设者实例.

代码

val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).build()
Run Code Online (Sandbox Code Playgroud)

然而有效

val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).fileName("dummy").build()
Run Code Online (Sandbox Code Playgroud)

产生编译错误

error: value build is not a member of ?0
val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM).fileName("dummy").build()
                                                                                                         ^
Run Code Online (Sandbox Code Playgroud)

(注意,type需要将其放在"引号"中,因为它是Scala中的关键字)

fileNameContentDispositionBuilder返回的实例T所以这应该实际工作.

我不懂.任何的想法?我顺便使用Scala 2.9.0.1.

更新:

这有效.但为什么我需要这里的铸造?

val contentDisposition = ContentDisposition.`type`(MediaType.APPLICATION_OCTET_STREAM)
  .fileName("dummy")
  .asInstanceOf[ContentDisposition.ContentDispositionBuilder[_,_]]
  .build()
Run Code Online (Sandbox Code Playgroud)

types scala inference jersey

7
推荐指数
1
解决办法
511
查看次数

Scala编译器无法推断混合类型以进行模式匹配

我有一个关于有限排列集的代数群的用例.因为我想将这个组用于各种不相关的排列类,我想把它作为一个混合特性来做.这是我尝试的摘录

trait Permutation[P <: Permutation[P]] { this: P =>
  def +(that: P): P

  //final override def equals(that: Any) = ...
  //final override lazy val hashCode = ...

  // Lots of other stuff
}

object Permutation {
  trait Sum[P <: Permutation[P]] extends Permutation[P] { this: P =>
    val perm1, perm2: P

    // Lots of other stuff
  }

  private object Sum {
    def unapply[P <: Permutation[P]](s: Sum[P]): Some[(P, P)] = Some(s.perm1, s.perm2)
    //def unapply(s: Sum[_ <: Permutation[_]]): Some[(Permutation[_], Permutation[_])] = Some(s.perm1, s.perm2) …
Run Code Online (Sandbox Code Playgroud)

types scala inference mixins

7
推荐指数
1
解决办法
445
查看次数

常量和编译时评估 - 为什么要更改此行为

如果你向Eric Lippert 转发大约13分钟的视频,他描述了对C#编译器所做的更改,该更改使得以下代码无效(显然在此代码编译之前包括.NET 2).

int y;
int x = 10;
if (x * 0 == 0)
    y = 123;

Console.Write(y);
Run Code Online (Sandbox Code Playgroud)

现在我明白了上面代码的任何执行实际上都是为了评估

int y;
int x = 10;
y = 123;
Console.Write(y);
Run Code Online (Sandbox Code Playgroud)

但是我不明白为什么将下面的代码编译成"可编辑"被认为是"可取的"?IE:允许这样的推论运行的风险是什么?

c# compiler-construction inference compiler-optimization

7
推荐指数
1
解决办法
587
查看次数

如何在R中编写多参数对数似然函数

我想估计以下问题的力量.我有兴趣比较两组都遵循Weibull分布.因此,A组有两个参数(形状par = a1,scale par = b1),两个参数有B组(a2,b2).通过模拟感兴趣分布的随机变量(例如假设不同的尺度和形状参数,即a1 = 1.5*a2,b1 = b2*0.5;或者组之间的差异只是形状或尺度参数),应用log-似然比测试以测试a1 = a2和b1 = b2(或者例如a1 = a1,当我们知道b1 = b2时),并估计测试的功效.

问题是什么是完整模型的对数似然,以及如何在a)具有精确数据时对R进行编码,以及b)对于区间删失数据?

也就是说,对于简化模型(当a1 = a2,b1 = b2时),精确和区间删失数据的对数似然是:

LL.reduced.exact <- function(par,data){sum(log(dweibull(data,shape=par[1],scale=par[2])))};
LL.reduced.interval.censored<-function(par, data.lower, data.upper) {sum(log((1-pweibull(data.lower, par[1], par[2])) – (1-pweibull(data.upper, par[1],par[2]))))}
Run Code Online (Sandbox Code Playgroud)

什么是完整模型,当a1!= a2,b1!= b2时,考虑到两种不同的观测方案,即当必须估计4个参数时(或者,如果有兴趣查看形状参数的差异,必须估计3个参数)?

是否有可能估计它为不同的组建立两个对数似然并将它们加在一起(即LL.full <-LL.group1 + LL.group2)?

关于区间删失数据的对数似然,删失是非信息性的,所有观察都是间隔删失的.任何更好的想法如何执行此任务将不胜感激.

请在下面找到R代码以获取确切数据以说明问题.非常感谢你提前.

R Code:    
# n (sample size) = 500
# sim (number of simulations) = 1000
# alpha  = .05
# Parameters of Weibull distributions: 
   #group 1: a1=1, b1=20
   #group 2: a2=1*1.5 b2=b1

n=500 …
Run Code Online (Sandbox Code Playgroud)

simulation inference r weibull

7
推荐指数
1
解决办法
2689
查看次数

推论分析与预测分析的主要区别

目的

为了澄清具有什么特征或属性,我可以说分析是推论性的或预测性的.

背景

参加一个涉及推理和预测分析的数据科学课程.解释(我理解)是

  • 推理

    从群体中的小样本中引入假设,并且在较大/整个群体中看到它是正确的.

    在我看来,这是概括.我认为诱导吸烟导致肺癌或二氧化碳导致全球变暖是推论分析.

  • 预测

    通过测量对象的变量来描述可能发生的事情.

    我认为,确定哪些特征,行为,评论让人们反应良好,并使总统候选人足够受欢迎成为总统是一种预测分析(这也在课程中被触及).

我对这两个人有点困惑,因为它看起来有灰色区域或重叠.

贝叶斯推断是"推论",但我认为它用于预测,例如垃圾邮件过滤器或欺诈性金融交易识别.例如,银行可以使用先前对变量的观察(例如IP地址,发起人国家,受益人帐户类型等)并预测交易是否是欺诈性的.

我认为相对论是一种推论分析,它从观察和思想实验中引入了一个理论/假设,但它也预测了光的方向会被弯曲.

请帮助我理解什么是必须具有的属性,以将分析分类为推理或预测.

statistics inference machine-learning prediction data-science

7
推荐指数
2
解决办法
4899
查看次数

在Rust中使用map时,"无法推断出`_`"的类型

我有一个问题,我正在尝试初始化具有随机真/假值的布尔数组的二维数组,但编译器似乎无法推断我需要的类型; 我只是想知道我需要为推理引擎指定什么才能解决这个问题.

extern crate rand;

fn main() {
    let mut grid = [[false; 10]; 10];
    grid.iter_mut().map(|row| { [false; 10].iter().map(|_| { rand::random() }).collect() });
}
Run Code Online (Sandbox Code Playgroud)

游乐场链接(不含rand::random())

我得到的错误是

   | grid.iter_mut().map(|row| { [false; 10].iter().map(|_| { rand::random() }).collect() });
   |                 ^^^ cannot infer type for `_`
Run Code Online (Sandbox Code Playgroud)

arrays inference rust

7
推荐指数
1
解决办法
5228
查看次数

“易处理”分布是什么意思?

例如,在生成对抗网络中,我们经常听说推理很容易,因为给定潜在变量 z 的 x 的条件分布是“易于处理的”。
另外,我在某处读到,玻尔兹曼机和变分自动编码器用于后验分布不易处理的情况,因此需要应用某种近似。
谁能告诉我“易处理”的严格定义是什么意思?或者有人可以在我上面给出的任何示例中解释一下,在这种情况下,“易处理”到底意味着什么?

statistics inference

7
推荐指数
1
解决办法
2647
查看次数

使用 Pytorch 在同一 GPU 上的进程之间共享 GPU 内存

我正在尝试实现一种在 Pytorch 中进行并发推理的有效方法。

现在,我在 GPU 上启动了 2 个进程(我只有 1 个 GPU,两个进程都在同一设备上)。每个进程加载我的 Pytorch 模型并执行推理步骤。

我的问题是我的模型占用了相当多的内存空间。我在 GPU 上有 12Gb 的内存,该模型仅需要大约 3Gb 的内存(没有数据)。这意味着我的 2 个进程总共需要 6Gb 的内存用于模型。


现在我想知道是否可以只加载一次模型,并使用这个模型对 2 个不同的进程进行推理。我想要的是模型只消耗了 3Gb 的内存,但仍然有 2 个进程。


我遇到了这个提到 IPC 的答案,但据我所知,这意味着进程 #2 将从进程 #1 复制模型,所以我最终仍会为模型分配 6Gb。

我还检查了 Pytorch 文档,关于 DataParallel 和 DistributedDataParallel,但似乎不可能。

似乎是我想要的,但我找不到任何关于如何在推理模式下与 Pytorch 一起使用的代码示例。


我知道这可能很难为训练做这样的事情,但请注意我只是在谈论推理步骤(模型处于只读模式,不需要更新梯度)。有了这个假设,我不确定这是否可能。

python gpu inference pytorch

7
推荐指数
1
解决办法
4683
查看次数

如何在等待响应时增加 AWS Sagemaker 调用超时

我向 aws sagemaker 部署了一个大型 3D 模型。推理将需要 2 分钟或更长时间。从 Python 调用预测器时出现以下错误:

An error occurred (ModelError) when calling the InvokeEndpoint operation: Received server error (0) from model with message "Your invocation timed out while waiting for a response from container model. Review the latency metrics for each container in Amazon CloudWatch, resolve the issue, and try again."'
Run Code Online (Sandbox Code Playgroud)

在 Cloud Watch 中,我还看到容器正在处理时出现一些 PING 超时:

2020-10-07T16:02:39.718+02:00 2020/10/07 14:02:39 https://forums.aws.amazon.com/ 106#106: *251 upstream timed out (110: Connection timed out) while reading response header from upstream, …
Run Code Online (Sandbox Code Playgroud)

python timeout inference amazon-web-services amazon-sagemaker

7
推荐指数
1
解决办法
2879
查看次数

如何从 YOLOv5 预测中获取类和边界框坐标?

我正在尝试对我的自定义 YOLOv5 模型进行推理。官方文档使用默认detect.py脚本进行推理。我已经编写了自己的 python 脚本,但无法从模型的输出访问预测的类和边界框坐标。这是我的代码:

import torch
    
model = torch.hub.load('ultralytics/yolov5', 'custom', path_or_model='best.pt') 
predictions = model("my_image.png")

print(predictions)
Run Code Online (Sandbox Code Playgroud)

python inference pytorch yolov5

7
推荐指数
2
解决办法
2万
查看次数