时间在服务器上面显示为NAN

本文介绍了一种使用JavaScript和jQuery实现动态倒计时的方法。通过解析输入的时间字符串,并将其转换为日期对象,进而计算出剩余天数、小时、分钟及秒数。最后更新到页面上对应的元素中。

function show() {

    var spanTimeList = new Array();
    var ipt_timeList = new Array();
    ipt_timeList = $(".ipt_time");                //变量
    spanTimeList = $(".span_time");         //变量 
    for (_i = 0; _i < spanTimeList.length; _i++) {
        var date = new Date();
        var timeEnd = $(ipt_timeList[_i]).val();     //时间为字符串类型。下面要转换
        var str;
        var s_split;
        var w_replace;
        if (timeEnd != "") {
            var obj1 = timeEnd.split(" ");
            var obj2 = obj1[0].split("-");
            var obj3 = obj1[1].split(":");
            $.each(obj2, function (i) {
                str += obj2[i] + ",";
            })
            $.each(obj3, function (i) {
                str += obj3[i] + ",";
            })
            str = str.substring(0, str.length - 1);
            w_replace = str.replace("undefined", "");
            s_split = w_replace.split(',');
                  }
        var dateEnd = new Date(s_split[0], s_split[1], s_split[2], s_split[3], s_split[4], s_split[5]);   //字符串类型转化为时间类型
        var date3 = dateEnd.getTime() - date.getTime();
        var days = Math.floor(date3 / (24 * 3600 * 1000));
        var leave1 = date3 % (24 * 3600 * 1000);
        var hours = Math.floor(leave1 / (3600 * 1000));
        var leave2 = leave1 % (3600 * 1000);
        var minutes = Math.floor(leave2 / (60 * 1000));
        var leave3 = leave2 % (60 * 1000);
        var seconds = Math.round(leave3 / 1000);

        $(".pl_bottom .s_day").eq(_i).text(days);
        $(".pl_bottom .s_hours").eq(_i).text(hours);
        $(".pl_bottom .s_minute").eq(_i).text(minutes);
        $(".pl_bottom .s_second").eq(_i).text(seconds);
          }

    setTimeout("show()", 1000);
}

 

 

 

 

上面需要JQuery 文件 1.3.2及以上版本.

### 原因分析 在训练机器学习模型时,损失函数(loss)显示NaN(Not a Number)通常是由于以下几种原因: 1. **数据问题**:数据标注中可能存在异常值,例如长或宽为0的框,或者小尺寸的框在数据增强后导致面积为0,这些都会导致回归损失变为NaN。 2. **学习率设置不当**:过高的学习率可能导致参数更新过大,从而使得损失函数值变得不稳定,最终出现NaN。 3. **梯度爆炸**:梯度在反向传播过程中可能会变得非常大,导致数值溢出,进而产生NaN。 4. **数值稳定性问题**:在计算损失函数时,可能会出现除以零或对数运算中的负数等情况,导致结果为NaN。 ### 解决方案 1. **检查数据标注**:确保数据集中没有长或宽为0的框,以及过滤掉那些特别小甚至面积为0的框。关闭一些可能会导致0面积框出现的数据增强操作。 2. **调整学习率**:降低学习率为原来的1/10或其他合适的比例,以确保参数更新的步长不会过大,从而避免损失函数值变得不稳定。 3. **延长warm up时间**:增加warmup_iters的值,例如从500更改为1000或2000,以帮助模型在训练初期更好地适应学习率的变化。 4. **添加梯度裁剪**:在配置中添加梯度裁剪以稳定训练过程,例如设置`optimizer_config=dict(grad_clip=dict(max_norm=35, norm_type=2))`。 5. **检查数值稳定性**:确保在计算损失函数时不会出现除以零或对数运算中的负数等情况。 ### 示例代码 以下是一个示例配置,展示了如何调整学习率、延长warm up时间以及添加梯度裁剪: ```python lr_config = dict( policy='step', warmup='linear', warmup_iters=1000, # 延长warm up时间 warmup_ratio=0.001, step=[8, 11] ) optimizer_config = dict( grad_clip=dict(max_norm=35, norm_type=2) # 添加梯度裁剪 ) ``` ### 相关问题 1. 如何检查数据标注中的异常值? 2. 如何选择合适的学习率? 3. 什么是梯度裁剪,它如何帮助解决NaN问题? 4. 如何在其他模型中应用这些解决方案?
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值