方法1:
class subnet1():
def __init__()
class subnet2():
def __init__()
class father_net():
def __init__():
self.n1 = subnet1()
self.n2 = subnet2()
def forward():
x = self.n1()
x = self.n2(x)
方法2:
class father_net():
def subnet1():
def subnet2():
def forward():
x = self.subnet1()
x = self.subnet2()
训练father_net
时似乎没什么不同。
但是我仍然想获得一些详细的解释。有想法吗?
答案 0 :(得分:0)
从面向对象的角度来看,方法1将两个子网实现为对象,并且将通过网络的正向传递作为一种行为。在方法2中,两个子网被定义为父网络对象的行为,因此被定义为方法。
从执行角度来看,两者是相同的,但是将子网视为实体(对象)并使其各自的前向通过(和后向通过)作为它们各自的行为是更有意义的。
方法2可能更有意义的一种情况是,您必须明确限制子网只能由father_net
使用。