实用程序类Accumulator-程序员宅基地

技术标签: python  机器学习  《动手学深度学习》代码详解  深度学习  

        前些日子发现动手学深度学习pytorch版李沐大佬是有课的,之前一直跟着另外一个GitHub项目在学,这里是对之前准确率中的一个实用程序类的解释,防止自己忘记。

        

class Accumulator:
    #在n个变量上累加
    def __init__(self, n):
        self.data = [0.0] * n
    def add(self, *args):
        for a, b in zip(self.data, args):
        self.data = [a + float(b) for a,b in zip(self.data, args)]

    def reset(self):
        self.data = [0.0] * len(self.data)

    def __getitem__(self, idx):
        return self.data[idx]

        首先在初始化的时候会根据传进来的n的大小来创建n个空间,且初始化全部为0.0。

        接着在使用.add()的时候情况下,虽然*args代表这里可以传入任意个参数,但是因为要和初始化的个数相同不然要报错。for a,b in zip(self.data,args)是把原来类中对应位置的data和新传入的args做 a + float(b)加法操作然后重新赋给该位置的data。从而达到累加器的累加效果。

        reset函数即重新设置空间大小并初始化。

        __getitem__实现类似数组的取操作。

下面是测试。

class Accumulator:
    #在n个变量上累加
    def __init__(self, n):
        self.data = [0.0] * n
    def add(self, *args):
        for a, b in zip(self.data, args):
            print(a, b)
        self.data = [a + float(b) for a,b in zip(self.data, args)]

    def reset(self):
        self.data = [0.0] * len(self.data)

    def __getitem__(self, idx):
        return self.data[idx]

metric = Accumulator(3)
print(metric[1])
metric.add(3,6,9)
print(metric[1])
metric.add(1,2)
print(metric[1])

输出:

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_44556141/article/details/120116161

智能推荐

9.大数据学习之旅——hive_hive show transactions; 是什么作用-程序员宅基地

文章浏览阅读277次。Hive介绍Hadoop开发存在的问题只能用java语言开发,如果是c语言或其他语言的程序员用Hadoop,存在语言门槛。需要对Hadoop底层原理,api比较了解才能做开发。Hive概述Hive是基于Hadoop的一个数据仓库工具。可以将结构化的数据文件映射为一张表,并提供完整的sql查询功能,可以将 sql语句转换为 MapReduce任务进行运行。其优点是学习成本低,可以..._hive show transactions; 是什么作用

从YOLOV1到YOLOV3_yolov3 orbslam-程序员宅基地

文章浏览阅读2.4k次,点赞2次,收藏18次。YOLOv1YOLOv1把输入图片切分成s×s个grid cell,每个grid cell只预测一个物体。如图所示:黄色grid cell会预测中心坐标点落入其中的这个person物体。注意这里的grid cell只是在图像上看起来是一个方格,实际是原图在经过yolo网络之后会变成s×s的feature map,下图中的一个grid cell经过网络变换之后到最后的特征层变成了一个坐标点。..._yolov3 orbslam

KVC的深层讲解_accessinstancevariablesdirectly-程序员宅基地

文章浏览阅读1.7k次,点赞2次,收藏2次。1. 谈谈你对KVC的理解KVC可以通过 key直接访问对象的属性给对象属性赋值运行时动态的访问或修改对象的属性底层执行机制如下以[self setValue:@“小明” forKey:@“name”];这句代码作为例子进行说明。1.程序优先调用setKey:属性方法,代码通过setter方法完成设置。注意这里的Key是指成员变量名,首字母大小写要符合KVC命名规范2.如果没有找到setName:方法KVC机制会检查+(BOOL)accessInstanceVariablesDi_accessinstancevariablesdirectly

python机械臂仿真_基于Python的3R机器人运动仿真-程序员宅基地

文章浏览阅读952次。一、问题描述如右图所示的三自由度机械臂,关节1和关节2相互垂直,关节2和关节3相互平行。如图所示,所有关节均处于初始状态。要求:(1) 定义并标注出各关节的正方向;(2) 定义机器人基坐标系{0}及连杆坐标系{1},{2},{3};(3) 求变换矩阵 , , ;(4) 根据末端腕部位置 (x, y, z) 返求出对应关节 , , ;(5) 利用软件绘制出机器人模型的三维点线图,并控制机器人腕部沿半..._如图所示三自由度机械臂,关节1和关节2相互垂直

Python 3 error :module 'cv2.cv2' has no attribute 'xfeatures2d'-程序员宅基地

文章浏览阅读182次。解决方法:1、卸载pip uninstall opencv-python2、pip install opencv-contrib-python==3.3.0.10

JavaScript高阶函数_js高阶函数-程序员宅基地

文章浏览阅读76次。JavaScript高阶函数什么是高阶函数如果一个函数以另一个函数作为参数,那么这样的函数就是高阶函数。高阶函数例子filter函数就是一个高阶函数,filter中的回调(参数)函数有一个要求:必须返回一个布尔值,当返回true时,函数内部会自动将这次回调函数的参数加入到新的数组中,当返回false时,函数内部会过滤掉这次的参数。let nums = [10, 90, 74, 100, 150, 1000, 983];let result = nums.filter(function (n) {_js高阶函数

随便推点

400多个JavaScript特效大全-程序员宅基地

文章浏览阅读4.1k次,点赞2次,收藏15次。400多个JavaScript特效大全,包含全部源代码和详细代码说明,不可多得 JavaScript实现可以完全自由拖拽的效果,带三个范例 http://www.sharejs.com/showdetail-501.aspx javascript实现可以自由拖动的树形列表 http://www.sharejs.com/showdetail-500.aspx 带模块编辑功能拖拽效果实现 http://www.sharejs.c_javascript特效大全

Minicom的使用-程序员宅基地

文章浏览阅读652次。Minicom的使用Minicom是linux上类似Windows的hyperteminal.串口终端工具运行MinicomSudo minicom –s端口配置,设备名可以在/dev下找到,通常是ttyUSB*, ttyS*, ttyACM*,可以插拔下看出来配置好后,选Exit退出(Not ‘Exit from Minicom’)。此时可以看到LOG(如果已

Set集合练习-程序员宅基地

文章浏览阅读625次。使用Set集合,生成1-25之内不重复的7个随机整数package pro_0415_homework;/** * 使用Set集合,生成1-25之内不重复的7个随机整数 */import java.util.HashSet;import java.util.Set;public class HomeWork01 { public static void main(Strin...

iView表格中输入框验证问题_iview 加星号-程序员宅基地

文章浏览阅读2.4k次。需求:  验证前两行的姓名不能为空;解决方案:判断是否前两行,如是则增加校验规则;需在<FormItem>前加<Form>标签否则失效;在fules里加条件判断那些行,需激活校验规则,如果不加判断条件则可全部激活(true)。如需在Input输入框前方加 * 必填提示,则只需在,label内容最好为空字符串。代码实现:<template> /..._iview 加星号

echarts饼图百分比的直接展示-程序员宅基地

文章浏览阅读5.7k次,点赞5次,收藏12次。<div id="wraper" style="width: 1100px;height: 500px;background-color: black;"></div>var wraperCon = document.getElementById("wraper"); var myChart = echarts.init(wraperCon); option = { title: { text: '', ._echarts饼图百分比

HTML---网络编程基础知识(2)-程序员宅基地

文章浏览阅读2.6k次。前言接着前面的HTML—网络编程1)来学习吧~~~色彩的表示在计算机显示器中,使用红(red)、绿(green)、蓝(blue)3种颜色来构成各种各样的颜色。颜色的种类有16,256及65536等多种。我们把这三种颜色人0到255分别编号,再表示为16进制的数,则红色(rr)就从00到ff,绿色(gg)和蓝色(bb)两种颜色也如此。三种颜色的表示合起来就是rrggbb。这样