热门
最新
红包
立Flag
投票
同城
我的
发布
qq_34588236
4 年前
trueqq_34588236
为什么pytorch的模型输出和标签纬度不同,也可以取loss,在mnist识别中,输出是10,标签是1维,为什么也能处理,其他框架都要one hot,pytorch不需要吗?很疑惑
下一条:
面试题:接口和抽象类的区别 首先从基础语法来说: (1)接口使用interface进行修饰,抽象类使用abstract class进行修饰; (2)抽象类中有构造方法,接口中没有构造方法; (3)接口中的所有方法都必须是抽象的,而抽象类中可以包含非抽象的普通方法; (3)接口中不可以有成员变量;而抽象类中可以有成员变量; (4)接口中抽象方法的权限修饰符只能为public,并且抽象方法默认就是使用public abstract进行修饰的; 而抽象类的抽象方法可以使用任意的权限修饰符进行修饰; (5)接口可以多实现,而抽象类只能被单继承;设计目的: 接口的设计目的是对类的行为进行约束,也就是提供一种机制,可以强制要求不同的类具有相同的行为。它只约束了行为的有无,但不对如何实现行为进行限制。 而抽象类的设计目的是为了实现代码的复用;当多个类具有某些相同的行为,并且其中一部分行为的实现方式一致时,我们就可以让这些类都派生于一个抽象类。所以它是先要有子类,然后才要有父类,说白了就是将子类的一些共性问题抽象出来放到父类中。而这个抽象的父类既可以实现方法,也可以不实现。如果抽象类实现了方法,那么子类调用的就是父类的方法。如果没有实现方法,那么就需要我们在子类中去实现。所以抽象类不可以被实例化,因为抽象类中有的方法没有被实现。 还有一点需要注意的是:抽象类是对类的本质的一个抽象,表达的是一种is a的关系,比如宝马是一辆车,那么我们的抽象类,它其实是包含并且实现了子类一些固有的特性,那么对于子类差异化的一些特性就交由子类自己去实现。而我们的接口,它是对行为的一种抽象,表达的是like a的一种关系,比如说飞行器可以像鸟一样飞,飞行器的本质还是飞行器,它只是具有飞这样的一种行为。所以对于接口而言,它的核心就是定义行为,而不关心实现这个行为的主体是谁以及这个行为是怎样实现的。 什么时候用抽象类,什么时候用接口? 如果我们要表示一种is a的关系,并且是为解决代码复用时,就可以使用抽象类;如果我们要表示一种like a的关系,或者你关注的是一个操作,一个行为的时候,那么就使用接口;
立即登录