isinstance函数无法判断当前层是该类
使用 if class_name in str(type(module)): 进行判断
一些建议:isinstance 函数的作用是判断一个对象是否是某个类的实例,或者是该类的子类的实例。例如:
isinstance(x, int) # 判断 x 是否是 int 类的实例
isinstance(x, (int, float)) # 判断 x 是否是 int 类或 float 类的实例
isinstance(x, MyClass) # 判断 x 是否是 MyClass 类的实例
isinstance(x, (MyClass, MySubClass)) # 判断 x 是否是 MyClass 类或 MySubClass 类的实例
isinstance 函数的第二个参数可以是一个类,也可以是一个类的元组。
如果你的代码中使用的是 isinstance 函数,但是却无法正常判断神经网络某层是否是该类的实例,那么可能是因为你使用了错误的参数或者代码逻辑有误。你可以检查一下参数是否正确,或者在调试时打印一下相关变量的值,看看有没有问题。
不知道你具体的网络结构,但是看你这情况,是要判断子层网络吧,你这里的nl是啥?为什么不直接使用网络类名呢?如果是在nl.py这个文件里面定义的,那么在import那边加入from nl import xxxxconv2d,xxxLinear 看看。
另外有个小的建议,这里for循环变量名不建议使用module(这个在网络里面一般指模型,很容易定义为全局变量,建议换一个别的名称),你看下你别的地方会不会有全局的module的变量,也可能导致冲突