GVKun编程网logo

ONNX C#:我如何阅读这个对象并提取概率值?

8

本文将带您了解关于ONNXC#:我如何阅读这个对象并提取概率值?的新内容,另外,我们还将为您提供关于10000人阅读这个页面后,页面将消失、c–Caffe的Softmax层如何计算概率值?、c#–创建

本文将带您了解关于ONNX C#:我如何阅读这个对象并提取概率值?的新内容,另外,我们还将为您提供关于10000 人阅读这个页面后,页面将消失、c – Caffe的Softmax层如何计算概率值?、c# – 创建N个对象并将它们添加到列表中、c# – 我如何阅读.docx文件?的实用信息。

本文目录一览:

ONNX C#:我如何阅读这个对象并提取概率值?

ONNX C#:我如何阅读这个对象并提取概率值?

如何解决ONNX C#:我如何阅读这个对象并提取概率值??

我已经保存了一个 ONNX 转换的预训练 RFC 模型,我正尝试在我的 API 中使用它。我可以调用保存的模型并进行预测,但是我无法获得预测值。反应很复杂,我似乎无法弄清楚。 这是调试模式下的预测值形状:

enter image description here

这里是在 python 中,我正在尝试获取第二个值:

enter image description here

这是我迄今为止尝试过的,但我只得到字符串值。

        var result = _inferencesession.Run(new List<NamedOnnxValue>
        {
            NamedOnnxValue.CreateFromTensor("input",attritionData.AsTensor())
        });
        var scoreValue = result.LastOrDefault().Value;
        var score = scoreValue.GetType()?.GetProperty("Value")?.Attributes;

解决方法

我找到了! 我必须使用 AsEnumerable 然后访问我想要的值:

       var seq = result.LastOrDefault().AsEnumerable<NamedOnnxValue>();
        var map = seq.First().AsDictionary<Int64,float>();
        var values = map.First().Value; //this is what I want

10000 人阅读这个页面后,页面将消失

10000 人阅读这个页面后,页面将消失

刚刚在Hacker News上 瞄到一个有趣的标题: This page will disappear in 10,000 views,意即一万人阅读这个页面后,该页面将永久地消失。犹豫了一下,虽然担心我会成为第一万个阅读者,也就是让这个页面万劫不复的人,但我还是抱着 试一试的心理点进去了。打开后的页面中出现了两行字以及一张图,分别是:

这条链接将会在下1位访客点击后失效;

如果你不想这条链接消失,那么在twitter上分享这条链接,它允许的点击量将增加1000。

乍看之下,这个idea有点像网页版的Snapchat,阅后即焚。但它恰恰抓住了人们不希望阅后即焚的心理,加了一条挽救规则——如果分享到社交网络上,那么它的存活几率将高一些。

我们已经看过很多分享到微信朋友圈、新浪微博而火起来的例子,比如百度魔图、疯狂猜图,不知道类似BlinkLink这种游戏性的设计会不会成为下一种病毒性营销的方式?

文章来自 36氪

c – Caffe的Softmax层如何计算概率值?

c – Caffe的Softmax层如何计算概率值?

有谁知道在Caffe softmax层内发生了什么计算?

我正在使用预先训练好的网络,最后是softmax图层.

在测试阶段,对于图像的简单前进,倒数第二层(“InnerProduct”)的输出如下:
-0.20095,0.39989,0.22510,-0.36796,-0.21991,0.43291,-0.22714,-0.22229,-0.08174,0.01931,-0.05791,0.21699,0.00437,-0.02350,0.02924,-0.28733,0.19157,-0.04191,-0.07360,0.30252

最后一层(“softmax”)输出是以下值:
0.00000,0.44520,0.01115,0.00000,0.89348,0.00002,0.00015,0.00003,0.00440,0.00011,0.00006,0.00018,0.00550,0.00004,0.05710

如果我在内积层的输出上应用softmax(使用外部工具,如matlab),我会得到以下值:
0.0398,0.0726,0.0610,0.0337,0.0391,0.0751,0.0388,0.0390,0.0449,0.0496,0.0460,0.0605,0.0489,0.0476,0.0501,0.0365,0.0590,0.0467,0.0452,0.0659

后者对我有意义,因为概率加起来为1.0(注意Caffe的softmax层值的总和> 1.0).

显然,Caffe中的softmax层不是一个直接的softmax操作.

(我认为它没有任何区别,但我只会提到我正在使用预先训练过的flickr风格网络,请参阅说明here).

编辑:

这是proto txt中最后两层的定义.请注意,最后一层的类型是“softmax”.

layer {
  name: "fc8_flickr"
  type: "InnerProduct"
  bottom: "fc7"
  top: "fc8_flickr"
  param {
    lr_mult: 10
    decay_mult: 1
  }
  param {
    lr_mult: 20
    decay_mult: 0
  }
  inner_product_param {
    num_output: 20
    weight_filler {
      type: "gaussian"
      std: 0.01
    }
    bias_filler {
      type: "constant"
      value: 0
    }
  }
}
layer {
  name: "prob"
  type: "softmax"
  bottom: "fc8_flickr"
  top: "prob"
}

解决方法

你得到的结果很奇怪.
“softmax”层的前向方法执行的操作是:

> computing the maximal value of the input vector
> subtract the maximal value from all elements in the vector
> exponent all values
> sum the exponents
> divide (scale) all exponented values by the sum.

(注意,执行前两个步骤是为了防止计算中的溢出).

c# – 创建N个对象并将它们添加到列表中

c# – 创建N个对象并将它们添加到列表中

我有一个方法接收N,我想创建的对象的数量,我需要返回一个N对象的列表.

目前我可以用一个简单的循环:

private static IEnumerable<MyObj> Create(int count,string foo)
    {
        var myList = new List<MyObj>();

        for (var i = 0; i < count; i++)
        {
            myList .Add(new MyObj
                {
                    bar = foo
                });
        }

        return myList;
    }

而且我想知道是否有另一种方式,也许用LINQ来创建这个列表.

我试过了:

private static IEnumerable<MyObj> CreatepaxPriceTypes(int count,string foo)
    {
        var myList = new List<MyObj>(count);

        return myList.Select(x => x = new MyObj
            {
                bar = foo
            });

    }

但这似乎填充了我的列表.

我尝试改变选择到一个foreach,但它是一样的交易.

我意识到列表的容量是count,LINQ没有找到任何元素来迭代.

myList.ForEach(x => x = new MyObj
        {
            bar = foo
        });

有没有正确的LINQ操作符来使这个工作?还是应该坚持循环?

解决方法

您可以使用范围来创建一个序列:
return Enumerable.Range(0,count).Select(x => new MyObj { bar = foo });

如果你想创建一个列表,你必须要列出它.

记住你,这可以说是一个非常明显的解决方案,所以不要抛出创建列表的迭代方法.

c# – 我如何阅读.docx文件?

c# – 我如何阅读.docx文件?

我有一个.docx文件,它包含许多我要批量邮件的电子邮件地址.我如何通过c#读取docx文件?

解决方法

最简单的方法可能是使用 Open XML SDK 2.0

获取Code Snippets for Visual Studio 2008的一些例子

我强烈建议下载Open XML SDK生产力工具,它将帮助您了解Open XML文件的结构,甚至可以帮助您根据文档结构生成与SDK一起使用的源代码.您可以从SDK的同一页面下载该工具.这是100MB,但值得下载.

今天关于ONNX C#:我如何阅读这个对象并提取概率值?的介绍到此结束,谢谢您的阅读,有关10000 人阅读这个页面后,页面将消失、c – Caffe的Softmax层如何计算概率值?、c# – 创建N个对象并将它们添加到列表中、c# – 我如何阅读.docx文件?等更多相关知识的信息可以在本站进行查询。

本文标签: