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

自定义损失函数中的值错误“未为任何变量提供梯度”

mmv456 2月前

60 0

我正在使用自定义损失函数对已训练的模型进行微调。我正在研究音频相关问题。当我的输入文件包含语音时,梯度正在有效地计算出来......

我正在使用自定义损失函数对已经训练过的模型进行微调。我正在研究一个与音频相关的问题。当我的输入文件包含语音时,系统会有效地计算该文件的梯度,但是一旦遇到没有语音的文件,我就会收到未提供梯度的错误。我可以返回该文件的损失,但是所有变量对于该文件的梯度都为零,与我提供的损失规模无关。我检查了模型的变量是否对输入文件有贡献,是的,它们确实转换了输入文件,消除了噪音。所以问题不在于没有变量对输入文件转换有贡献。我认为我在处理代码中未根据相应的 True 条件计算共振峰和谐波误差的情况时可能有错误。

 # Update the code snippet to calculate conditions for harmonic and formant errors
                is_voiced_h = tf.cond(
                    tf.logical_and(
                        tf.logical_and(i < num_frames - 1, tf.equal(speechs[i], 1)),
                        tf.logical_and(tf.equal(speechs[i], 1), tf.equal(speechs[i + 1], 1)
                                       )),
                    lambda: True,  # Condition met
                    lambda: False)  # Out of bounds or condition not met

                is_voiced_f = tf.cond(tf.logical_and(
                    tf.logical_and(i < num_frames - 1, tf.equal(speechs[i], 1)),
                    tf.logical_or(tf.equal(speechs[i + 1], 1), tf.equal(speechs[i + 2], 1))
                                    ),
                                      lambda: True,  # Condition met
                                      lambda: False)  # Out of bounds or condition not met

                is_unvoiced_f = tf.cond(tf.logical_and(tf.logical_and(i< num_frames - 2, tf.equal(speechs[i], 3)),
                                                       tf.logical_or(tf.equal(speechs[i + 1], 3),
                                                                     tf.equal(speechs[i + 2], 3))),
                                        lambda: True,  # Condition met
                                        lambda: False)  # Out of bounds or condition not met

                if i < (num_frames-2)//2:
                    not_flagged_f = tf.cond(tf.logical_and(i < num_frames - 2,  # Check out of bounds
                                                          tf.logical_or(tf.equal(flags[i], False),
                                                                        tf.logical_or(tf.equal(flags[i + 1], False),
                                                                                      tf.equal(flags[i + 2], False)))),
                                            lambda: True,   # Condition met
                                            lambda: False)  # out of bounds or condition not met
                else:
                    not_flagged_f = True

                pitch = process_audio_tf(ref_frame_h, sample_rate=sample_rate)
                pitch = pitch[0]
                epsilon = 1e-5
                harmonic_error = tf.cond(is_voiced_h,
                                         lambda: process_frame(ref_frame_h, model_frame_h, pitch, sample_rate),

                                         lambda: tf.zeros((1,), dtype=tf.float32)) + epsilon

                formant_error = tf.cond(tf.logical_and(tf.logical_or(is_voiced_f, is_unvoiced_f), not_flagged_f),
                                        lambda: calculate_formant_error(ref_frame_f, model_frame_f, sample_rate,
                                                                        formants[i:i + 1,...][0, 0],
                                                                        formants[i:i + 1,...][0, 1], n_fft),
                                        lambda: tf.zeros((8,), dtype=tf.float32)) + epsilon

                #tf.print('harmonic_error from body', harmonic_error)
                #tf.print('formant_error from body', formant_error)

                harmonic_errors = harmonic_errors.write(i, harmonic_error)
                formant_errors = formant_errors.write(i, formant_error)

                return i + 1, harmonic_errors, formant_errors

            _, harmonic_errors, formant_errors = tf.while_loop(lambda i, *_: i < num_frames, body, [0, harmonic_errors, formant_errors])
            harmonic_errors = harmonic_errors.stack()
            formant_errors = formant_errors.stack()
帖子版权声明 1、本帖标题:自定义损失函数中的值错误“未为任何变量提供梯度”
    本站网址:http://xjnalaquan.com/
2、本网站的资源部分来源于网络,如有侵权,请联系站长进行删除处理。
3、会员发帖仅代表会员个人观点,并不代表本站赞同其观点和对其真实性负责。
4、本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
5、站长邮箱:yeweds@126.com 除非注明,本帖由mmv456在本站《tensorflow》版块原创发布, 转载请注明出处!
最新回复 (0)
  • @Dr.Snoopy,梯度不是针对某些文件计算的,因此可微分性不是问题,而我处理无语音帧错误的方式才是问题。我为无语音帧返回了一个恒定错误,这导致图表与层中的贡献变量断开连接。但是,一旦我确定了这一点,问题就解决了。感谢您的回复。

  • 以前使用 VB.NET(.NET 4.8)时,我曾通过以下方式读取编码为 windows-1252 的文件:File.ReadAllText(filePath, Encoding.GetEncoding(1252))现在在我的 ASP.NET Core 6 应用程序中,我读取...

    通过以下方式 windows-1252 读取具有以下编码的文件

    File.ReadAllText(filePath, Encoding.GetEncoding(1252))
    

    现在,在我的 ASP.NET Core 6 应用程序中,我正在读取文件,并将相同的代码转换为 C#:

     File.ReadAllText(filePath, Encoding.GetEncoding(1252));
    

    对于文件内的特殊字符,VB.NET 返回 char-code char = 132 ,而 ASP.NET Core 6 返回 char = 8222 。为什么代码不同,我该如何修复它?

    我已经关注了这个 问题 。我已经添加了包并注册了提供程序,但这并没有改变任何东西——有或没有它的行为都是一样的。

  • 我不知道问题是什么。我的数据正在保存,但 toast 消息和重定向到操作方法不起作用。有趣的是 - 在调试时,它会执行两个结束条件...

    我不知道问题是什么。我的数据正在保存,但 toast 消息和重定向到操作方法不起作用。有趣的是 - 在调试时,它执行了两个结束条件,但我不知道为什么它不起作用!Toast 消息和重定向在其他控制器上起作用。

    代码:

    [HttpPost]
    public async Task<IActionResult> CreateSlot(AppointmentViewModel model, Appointment appointment)
    {
        var currentUser = await _tokenService.GetUserViaToken();
    
        string[] timeParts = model.Time.Split('-');
    
        if (timeParts.Length == 2)
        {
            string startTimeString = timeParts[0].Trim();
            string endTimeString = timeParts[1].Trim();
    
            // only start time
            TimeOnly startTime = TimeOnly.ParseExact(startTimeString, "hh:mm tt", CultureInfo.InvariantCulture);
            TimeOnly endTime = TimeOnly.ParseExact(endTimeString, "hh:mm tt", CultureInfo.InvariantCulture);
    
            var appointmentDate = DateTime.ParseExact(model.Date, "yyyy-MM-dd", CultureInfo.InvariantCulture);
    
            var dateCheck = appointmentDate.DayOfWeek.ToString();
    
            var slotId = _context.AvailableSlots
                                 .Where(x => x.UserId == model.DoctorId 
                                             && x.StartTime == startTime 
                                             && x.EndTime == endTime 
                                             && x.Day.Name == appointmentDate.DayOfWeek.ToString())
                                 .Select(x => x.Id)
                                 .FirstOrDefault();
    
            var data = new Appointment
              {
                  AppointmentById = currentUser.Id,
                  AppointmentWithId = model.DoctorId,
                  CreatedTime = DateTime.UtcNow,
                  AppointmentDate = appointmentDate,
                  AppointmentStatusId = 1,
                  AvailableSlotId = slotId
              };
    
            _context.Appointments.Add(data);
            await _context.SaveChangesAsync();
    
            TempData.AddToastMessage("success", "Appointment Created!");
    
            return RedirectToAction("Index", "Home");
        }
        else
        {
            return null;
        }
    }
    

    我想显示 Toast 消息并重定向到 Index 视图

  • 我需要为 appsettings.json 文件中 yarp 路径部分的以下路径定义一个模式:/Contact/Images/Image.ashx?h=28&id=69865t65-888t-w987-tg7l-j88yt6541uj&w=100&54464454my config...

    我需要为 appsettings.json 文件中 yarp 路径部分的以下路径定义一个模式:

    /Contact/Images/Image.ashx?h=28&id=69865t65-888t-w987-tg7l-j88yt6541uj&w=100&54464454

    我在 appsettings.json 文件中对 yarp 的配置如下:

          "ReverseProxy": {
             "Routes": {
                "route1": {
                   "ClusterId": "cluster1",
                   "Match": {
                         "Path": ""
                     }
                  }
               },
               "Clusters": {
                  "cluster1": {
                     "LoadBalancingPolicy": "RoundRobin",
                     "Destinations": {
                        "cluster1/destination1": {
                           "Address": "https://www.example.com"
                        }
                     }
                  }
               }
            }
    

    我能做什么?任何帮助都将不胜感激。

  • 提供yarp Path定义时,是否要定义匹配的路由模板?还是本地文件路径或目标地址路径?

  • 我想在 \'Path\' 中放置一个模式来与 \'/Contact/Images/Image.ashx?h=28&id=69865t65-888t-w987-tg7l-j88yt6541uj&w=100&54464454\' 相对应

  • vhs 2月前 0 只看Ta
    引用 8

    您可以在 Match 部分的 Path 字段中添加匹配模式。 {**catch-all} 是一个通配符,将匹配任何路径。然后在 Address 中配置目标服务器地址。

    在这个例子中:我为响应配置了路由地址,也就是说当有路径匹配的请求时 /WeatherForecast/PP/{**catch-all} ,该请求会被转发到我在 Address 中配置的目标 api 地址:

    {
      "Logging": {
        "LogLevel": {
          "Default": "Information",
          "Microsoft": "Warning",
          "Microsoft.Hosting.Lifetime": "Information"
        }
      },
      "AllowedHosts": "*",
      "ReverseProxy": {
        "Routes": {
          "route1": {
            "ClusterId": "cluster1",
            "Match": {
              "Path": "/WeatherForecast/PP/{**catch-all}"
            }
          }
        },
        "Clusters": {
          "cluster1": {
            "Destinations": {
              "destination1": {
                "Address": "https://localhost:7198/"
    
              }
            }
          }
        }
      }
    }
    

    当对应的路由节点:

    enter image description here

    这将转发到我的目标地址:

    enter image description here

返回
作者最近主题: