首页 > 解决方案 > 如何将值附加到 Keras 深度网络中的张量

问题描述

我更熟悉 Pytorch,但是,当前的项目需要 Keras。我的基本型号是Densenet121. 我Global Average Pooling为输出附加了一个层和一个 softmax 层。

我想做的是GlobalAveragePooling2D()在训练时将来自另一个网络的输出附加到当前批次的输出,作为一个小实验。在Pytorch中,我只会在 Forward 函数中附加值,但是对于 Keras 来说是新手,我有点卡住了。以下是我基本设置模型的方式。任何帮助,将不胜感激。

x = base_model.output
x_pool = GlobalAveragePooling2D()(x)
predictions = Dense(1, activation="sigmoid")(x_pool)
model = Model(inputs=base_model.input, outputs=predictions)
model.compile(optimizer='adam',
              loss='categorical_crossentropy')
history = model.fit_generator(train_generator, 
                              validation_data=valid_generator,
                              steps_per_epoch=100, 
                              validation_steps=25, 
                              epochs = 3)

在 Pytorch 中,我会做这样的事情(这很粗糙,但希望你能明白)。

def forward(self, x, value):
     .
     .
     .
     x = self.conv_layer(x)
     x = self.global_pool(x)
     x = torch.cat((x, value), dim = 3) #tensor is of shape (batch_size, 1, x.shape[2]+1)
     x = x.view(-1, 1)
     x = self.sigmoid(x)
     return x

标签: pythontensorflowkerasdeep-learningpytorch

解决方案


推荐阅读