gpt4 book ai didi

python - 如何在 CNTK Sequential 中添加两层

转载 作者:行者123 更新时间:2023-12-01 02:35:52 25 4
gpt4 key购买 nike

我目前正在重新实现 Jonathan Longs FCN8-s 的 TensorFlow 实现使用 CNTK。虽然 TensorFlow 对我来说非常熟悉,但我在使用 Microsoft 的 CNTK 方面还非常缺乏经验。我读了一些 CNTK Github 教程,但现在我想添加 pool4_score 和 upscore 层。在 TensorFlow 中,我只需使用 tf.add(pool4_score, upscore1)但在 CNTK 中我必须使用 Sequentials (正确吗?)所以我的代码如下所示:

with default_options(activation=None, pad=True, bias=True):
z = Sequential([
For(range(2), lambda i: [
Convolution2D((3,3), 64, pad=True, name='conv1_{}'.format(i)),
Activation(activation=relu, name='relu1_{}'.format(i)),
]),
MaxPooling((2,2), (2,2), name='pool1'),

For(range(2), lambda i: [
Convolution2D((3,3), 128, pad=True, name='conv2_{}'.format(i)),
Activation(activation=relu, name='relu2_{}'.format(i)),
]),
MaxPooling((2,2), (2,2), name='pool2'),

For(range(3), lambda i: [
Convolution2D((3,3), 256, pad=True, name='conv3_{}'.format(i)),
Activation(activation=relu, name='relu3_{}'.format(i)),
]),
MaxPooling((2,2), (2,2), name='pool3'),

For(range(3), lambda i: [
Convolution2D((3,3), 512, pad=True, name='conv4_{}'.format(i)),
Activation(activation=relu, name='relu4_{}'.format(i)),
]),
MaxPooling((2,2), (2,2), name='pool4'),

For(range(3), lambda i: [
Convolution2D((3,3), 512, pad=True, name='conv5_{}'.format(i)),
Activation(activation=relu, name='relu5_{}'.format(i)),
]),
MaxPooling((2,2), (2,2), name='pool5'),

Convolution2D((7,7), 4096, pad=True, name='fc6'),
Activation(activation=relu, name='relu6'),
Dropout(0.5, name='drop6'),

Convolution2D((1,1), 4096, pad=True, name='fc7'),
Activation(activation=relu, name='relu7'),
Dropout(0.5, name='drop7'),

Convolution2D((1,1), num_classes, pad=True, name='fc8')

ConvolutionTranspose2D((4,4), num_classes, strides=(1,2), name='upscore1')
# TODO:
# conv for pool4_score with (1x512) and 21 classes
# combine upscore 1 and pool4_score
])(input)

我读到有一个 combine方法..但我没有找到如何在顺序中使用它的示例。那么我将如何实现 tf.add使用CNTK的方法?

非常感谢!

最佳答案

您可以使用 C.plus 或 +,在这种情况下,您需要拆分序列才能到达要添加的图层。

例如以下:

z = Sequential([Convolution2D((3,3), 64, pad=True),
MaxPooling((2,2), (2,2))])(input)

相当于:

 z1 = Convolution2D((3,3), 64, pad=True)(input)
z2 = MaxPooling((2,2), (2,2))(z1)

您现在可以执行 z1 + z2。

关于python - 如何在 CNTK Sequential 中添加两层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46234319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com