8wDlpd.png
8wDFp9.png
8wDEOx.png
8wDMfH.png
8wDKte.png

如果 sum(y_true)=1,应该使用哪个损失函数?

Mateut Alin 2月前

262 0

我的 yTrue 基本上像 [.2,.8],但从来不是 [1,0] 或 [0,1]sum(yTrue)=1 总是我尝试了 CategoricalCrossentropy 但发生了 TypeError-TypeError: 预期为 float32,但得到了

我的 yTrue 基本上像 [.2,.8] 但从来不是 [1,0] 或 [0,1]sum(yTrue)=1

我尝试了 CategoricalCrossentropy 但发生了 TypeError-

类型错误:预期为 float32,但得到了类型为“CategoricalCrossentropy”。

帖子版权声明 1、本帖标题:如果 sum(y_true)=1,应该使用哪个损失函数?
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由Mateut Alin在本站《tensorflow》版块原创发布, 转载请注明出处!
最新回复 (0)
  • 分类交叉熵用于分类。损失函数是 y_i*log(f(y_i)) 之和的负数,其中 f(y_i) 是模型的概率预测。看起来您有一个 y=0 和 y=1 的概率数组。您需要选择其中一个(通常为 y=1)作为目标变量,并将概率转换为标签:

    y[y>=0.5]=1
    y[y<0.5]=0
    

    或者

    y = (y >= 0.5).astype(int)
    
  • 我正在学习机器学习和人工智能,正在研究大约 2-3 年前编写的代码。以下是我遇到问题的代码部分:import pandas as pdimport numpy as npimport randomimport

    我正在学习机器学习和人工智能,并查看了大约 2-3 年前编写的代码。以下是我遇到问题的代码部分:

    import pandas as pd
    import numpy as np
    import random
    import time
    from sklearn.preprocessing import OneHotEncoder
    from sklearn.preprocessing import RobustScaler
    import tensorflow as tf
    from tensorflow.keras.layers import CuDNNLSTM,Dropout,Dense,Input,add
    

    当我使用上述代码运行时出现以下错误:

    ImportError: cannot import name 'CuDNNLSTM' from 'tensorflow.keras.layers'
    

    当我寻找解决方案时,我得到了以下建议:

    from tensorflow.compat.v1.keras.layers import CuDNNLSTM
    

    因此我添加了上述行并从上一个导入行中删除了 CuDNNLSTM。现在我得到了他的错误:

    ModuleNotFoundError: No module named 'tensorflow.compat.v1.keras'
    

    我能得到帮助来解决上述问题吗?这是使用 CuDNNLSTM 的代码摘录。

        inputs = Input(shape=(240,1))
        x = CuDNNLSTM(25,return_sequences=False)(inputs)
        x = Dropout(0.1)(x)
    
  • 那样可行,但那不是目标,yTrue 中的浮点数代表这个决定有多好,还有其他解决方案吗?

  • 也许你应该简单地替换 CuDNNLSTM LSTM CuDNNLSTM 已被弃用 .

    根据 此答案 ,您无法再指定 CuDNNLSTM 。相反,它将在满足某些条件时自动使用。

  • 这里的 yTrue 是股票价格从当前价格上涨和下跌的比率(以 % 为单位),我试图预测该比率

  • 因此,澄清一下,您想预测 low/current_price 和 high/current_price?在这种情况下,您有一个多输出回归,而交叉熵不是合适的损失函数。相反,您需要使用均方误差。此外,如果它们的总和始终为 1,那么您只需要预测其中一个,然后可以通过 1 预测获得另一个。

  • 给定以下类图和对象图,是否允许在 OD 中为 r2d2 机器人创建两个人?类图:对象图:我不确定,但我不认为这是可能的......

    给定以下类图和对象图,是否允许在 OD 中 Persons r2d2 Robot

    类图:

    对象图:

    我不确定,但我认为这是不可能的,因为人员方面有 0..1 的多重性。因此每个机器人只能有零个或一个人。

    此外,是否允许从接口到类进行组合,如下例所示?

    enter image description here

    我认为这是可以的,因为你必须为你的类实现接口描述。

  • 限定符 级别 。在这种情况下,侧面的多重性 Person 是针对限定的 Robot ,即 a Robot AND a Token ,并且 Token 对于 Robot .

    因此,完全有可能有多个从 r2d2 到 Person 实例的链接,但条件是每个标记不超过一个链接。

    第二部分原则上应该放在另一个问题中,因为它与其余部分没有太大关系。为了提高效率,我在这里回答:
    2. 是的,正如您所想的那样(但是双向导航应该用开口箭头而不是普通箭头显示):-)

  • 引用 10

    有什么方法可以让下面的内容在 JavaScript 中工作吗?var foo = { a: 5, b: 6, c: this.a + this.b // 不起作用}; 在当前形式中,此代码显然通过......

    有没有什么方法可以让下面的内容在 JavaScript 中运行?

    var foo = {
        a: 5,
        b: 6,
        c: this.a + this.b  // Doesn't work
    };
    

    在当前形式下,此代码显然会引发引用错误,因为 th有 不引用 foo 。但是, is 没有办法让对象文字的属性中的值依赖于先前声明的其他属性?

  • 在 UML 中,有一种东西叫做限定符。限定符的每个都会在关联的另一端产生多个实例。在本例中,每个将产生零个或一个 Person 实例。这意味着 \'jd\' 不会产生 Person,\'gl\' 会产生一个名为 \'george\' 的 Person,而 \'ts\' 会产生一个名为 \'tony\' 的 Person。

    黑色箭头不是有效的 UML。

  • 好吧,我唯一能告诉你的是 getter :

    var foo = {
      a: 5,
      b: 6,
      get c() {
        return this.a + this.b;
      }
    }
    
    console.log(foo.c) // 11

    这是 ECMAScript 第五版规范引入的语法扩展,大多数现代浏览器(包括 IE9)都支持该语法。

  • 非常有用的答案。有关“get”的更多信息,请参见此处:developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/…

  • 请注意,使用此解决方案,如果 foo.a 或 foo.b 的值发生变化,则 foo.c 的值也会同步变化。这可能是也可能不是所需的。

  • 引用 15

    你想到的是什么背景?另外,我不熟悉“印度人无处不在”这个成语。你能解释一下吗?

  • 引用 16

    请注意,这将绑定到最深的嵌套对象。例如:... x:{get c(){/*这是x,不是foo*/}}...

  • 哈哈,我想我的思维太过条理性,无法想到印第安人。黑色箭头确实看起来有点像微型延伸箭头,但对我来说,它们更像是“危险,威尔·罗宾逊”,如果你够大到能理解这个说法的话。

  • 为了完成上面的陈述,由于 foo 被声明为一个变量,并且 c 只会在调用时被评估,所以在 c 中使用 foo 是可行的,与此相反(但要小心)

  • 引用 19

    你可以做类似的事情:

    var foo = {
       a: 5,
       b: 6,
       init: function() {
           this.c = this.a + this.b;
           return this;
       }
    }.init();
    

    这将是对象的某种一次性初始化。

    init() 的返回值分配给 foo ,因此您必须 return this .

  • @BillyMoon:确实如此,尽管这样做会影响许多引擎(例如 V8)上该对象所有后续属性访问的性能。

返回
作者最近主题: