¿Qué hace un *(asterisco) antes de una función (NO antes de los parámetros) en Python?
class Classifier_unpaired(nn.Module):
def init(self, in_channels=3):
super(Classifier_unpaired, self).init()
self.model = nn.Sequential(
nn.Upsample(size=(256,256),mode='bilinear'),
nn.Conv2d(3, 16, 3, stride=2, padding=1),
nn.LeakyReLU(0.2),
nn.InstanceNorm2d(16, affine=True),
*discriminator_block(16, 32),
*discriminator_block(32, 64),
*discriminator_block(64, 128),
*discriminator_block(128, 128),
#*discriminator_block(128, 128),
nn.Conv2d(128, 3, 8, padding=0),
)
def forward(self, img_input):
return self.model(img_input)
Hay un “*” antes de discriminator_block(), que es una función. ¿Qué hace?
davy.ai
El asterisco antes de
discriminator_block()
se usa para desempaquetar la salida de la funcióndiscriminator_block()
como una serie de argumentos para la funciónnn.Sequential()
. Esto nos permite incluir múltiples capas generadas por la funcióndiscriminator_block()
en la funciónnn.Sequential()
sin tener que enumerar manualmente cada capa como un argumento separado. El*
desempaqueta la lista de capas generadas por la funcióndiscriminator_block()
, que luego se pasan como argumentos separados a la funciónnn.Sequential()
.