1、tester中对验证集的测试在哪里?
回答:在tester中的test函数中,这里需要注意的是,test函数中没有直接调用SpanFPreRecMetric函数计算F1,而是调用了其继承的Metric基类,来调用SpanFPreRecMetric中的evaluate方法。
2、fastnlp中的装饰器怎么使用?
通过使用__getattr__方法,调用不同时刻遇到的不同函数。
3、inspect模块
使用了
spect = inspect.getfullargspec(func)
方法,获得函数参数的名称和默认值。
4、_call_()方法
1、该方法的功能类似于在类中重载 () 运算符,使得类实例对象可以像调用普通函数那样,以“对象名()”的形式使用。
Python 中,凡是可以将
括号 ()
直接应用到自身并执行,都称为可调用对象。可调用对象包括自定义的函数、Python 内置函数以及类实例对象。
对于可调用对象,实际上“名称()
”可以理解为是“名称.__call__()
”的简写。
参考链接:http://c.biancheng.net/view/2380.html2、特点:_call_() 弥补了 hasattr() 函数的短板
hasattr() 函数的用法,该函数的功能是查找类的实例对象中是否包含指定名称的属性或者方法,但该函数有一个缺陷,即它无法判断该指定的名称,到底是类属性还是类方法。
要解决这个问题,可以借助可调用对象的概念。因为类实例对象包含的方法,其实也属于可调用对象,但类属性却不是。
例子如下所示:
class Person:
def __init__ (self):
self.name = "tyler"
self.age = 18
def write(self):
print("我正在写字")
tyler = Person()
if hasattr(tyler,"name"):
print(hasattr(tyler.name,"__call__"))
print("--------------------------------")
if hasattr(tyler,"write"):
print(hasattr(tyler.write,"__call__"))
'''
False
--------------------------------
True
'''
5、_transfer(func)装饰器在哪
fastnlp/core/utils.py
6、fastnlp使用bert作为词向量时,向量值为什么会变
因为其使用了dropout,所以每次dropout的位置不同,导致数值会变。