[Basic] 浮点型比较需要注意精度

public class DoubleCompare
    {
        // Fields 浮点型的误差
        private const double DOUBLE_DELTA = 1E-06;

        public static bool AreEqual(double value1, double value2)
        {
            return (value1 == value2)
                || Math.Abs(value1 - value2) < DOUBLE_DELTA;
        }

        public static bool GreaterThan(double value1, double value2)
        {
            return ((value1 > value2) && !AreEqual(value1, value2));
        }

        public static bool GreaterThanOrEqual(double value1, double value2)
        {
            return (value1 > value2) || AreEqual(value1, value2);
        }

        public static bool IsZero(double value)
        {
            return (Math.Abs(value) < DOUBLE_DELTA);
        }

        public static bool LessThan(double value1, double value2)
        {
            return ((value1 < value2) && !AreEqual(value1, value2));
        }

        public static bool LessThanOrEqual(double value1, double value2)
        {
            return (value1 < value2) || AreEqual(value1, value2);
        }
    }

 

转载于:https://www.cnblogs.com/panpan-v1/p/5133156.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: bottleneck和basicblock是深度学习中常用的两种卷积神经网络结构。 Bottleneck结构是一种优化卷积神经网络的方法,它通过在卷积层前加入1x1的卷积层来减少计算量和参数数量。Bottleneck结构通常用于ResNet等深层网络中,可以有效地提高模型的性能和训练速度。 Basicblock结构是一种基本的卷积神经网络结构,它由一个卷积层和一个激活函数组成。Basicblock结构通常用于较浅的网络中,如VGG等。虽然Basicblock结构比Bottleneck结构简单,但在一些任务中也可以取得不错的效果。 总的来说,Bottleneck结构适用于深层网络,可以提高模型的性能和训练速度;而Basicblock结构适用于较浅的网络,可以在一些任务中取得不错的效果。 ### 回答2: 在深度学习中,常见的构建模块有bottleneck和basicblock两种,它们都是卷积神经网络(CNN)中的基础构建单元,用于实现卷积、BN、激活等操作。本文将对比这两种构建模块。 首先,我们看看basicblock。basicblock是最基本的卷积区域,由两个卷积层和一个ReLU激活函数组成。这些卷积操作可以有效地提取特征。basicblock易于实现和训练,除此之外,basicblock也非常轻便,这意味着它在不同的层级中可以非常方便地重复使用,这在堆叠层级较深的网络时非常有用。但basicblock存在的问题是,由于它的卷积层只使用了3x3的卷积核,因此可能会丢失一些细节信息。 与之相对的是bottleneck。bottleneck的核心思想是将卷积核大小降到较小的值,通常为1x1,这样既可以加速计算,又可以保留更多的空间信息。bottleneck由三个卷积层组成,下面是1x1卷积层,中间是3x3卷积层,上面还是1x1卷积层。最后,我们将三个操作串起来,就可以得到一个完整的bottleneck。这种结构可以有效地减少参数数量,并使得计算速度更快,此外bottleneck还可以减少维度,从而更好地控制模型的大小。 总之,basicblock和bottleneck都是卷积神经网络中常见的构建块。basicblock是一个轻量级的卷积区域,易于实现和训练,但对更好的特征提取存在一定的限制。bottleneck通过降低卷积核的大小来保留更多的细节信息,从而更加高效,但需要更多的计算资源。 ### 回答3: bottleneck和basicblock都是在神经网络中常用的基本模块,主要用于构建深层网络模型。它们的作用类似于模型中的砖块,可以用不同的方式组合来构建一个完整的网络。 首先,可以从结构上来比较它们。basicblock通常由两次卷积操作和一个恒等映射组成,其中恒等映射是为了保持输入输出维度一致。而bottleneck则包含一个1x1卷积、一个3x3卷积和另一个1x1卷积,同样也有一个恒等映射。可以看到,bottleneck相对于basicblock多了一次卷积,但是这个卷积的通道数较少,因此可以减少参数数量,同时增加网络深度。 其次,可以从复杂度和效率上来比较。由于bottleneck有一个较小的卷积层,因此它的计算复杂度较低,但同时又具有较高的表达能力,能够捕捉到更深层次的特征。因此,对于深层网络的构建来说,bottleneck更适合用于增加层数。而basicblock则相对简单,计算复杂度低,但对于比较浅的网络来说,由于没有较深的层次,它的表达能力并不低。 最后,可以从应用场景上来比较。基于以上分析,bottleneck可以用于构建更深的网络来应对复杂任务,如图像分类、目标检测等。而basicblock适合构建较浅的网络来应对一些相对简单的任务,如场景分类、特征提取等。 因此,可以看到,bottleneck和basicblock都有自己的特点和适用场景,具体应该根据实际任务需求来选择使用。对于复杂任务,可以使用bottleneck来增加网络深度,而对于简单任务,则可以使用basicblock来减少计算复杂度,并保证网络准确性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值