【问题标题】:How to perform Virtual Batch Normalization (VBN) in keras如何在 keras 中执行虚拟批量标准化(VBN)
【发布时间】:2019-05-02 07:21:25
【问题描述】:

This 论文中讨论了VBN。并实现了HereHereHere。我不想去核心/完整代码。我只想知道,如何使用 VBN 作为 keras 层,因为我不是很专业的 tensorflow/keras 编码器。我一般使用简单的批量归一化(BN)如下

model.add(BatchNormalization(momentum=0.8))

在下面的keras代码中如何使用VBN代替BN?

model.add(Dense(256,input_dim=self.input_dim))
model.add(LeakyReLU(alpha=.2))
model.add(BatchNormalization(momentum=0.8))%I want to replace this with VBN
model.add(Dense(512))
......
.......

【问题讨论】:

    标签: tensorflow keras keras-layer tf.keras


    【解决方案1】:

    在第一个链接中他们说

    __init__ API 旨在模仿 tf.compat.v1.layers.batch_normalization 为 尽可能接近。

    所以如果你看看https://www.tensorflow.org/api_docs/python/tf/layers/batch_normalization
    它说您将此功能用作...

    x_norm = tf.layers.batch_normalization(x, training=training)
    

    所以如果我理解得很好,
    使用功能 API https://keras.io/getting-started/functional-api-guide/

    你可能应该这样做:

    layer_n = VBN(**kwargs, layer_n-1)
    

    希望对你有帮助

    【讨论】:

    • 我没有完全理解答案。我浏览了你提到的功能链接,完全但没有在任何地方找到VBN功能。我通过编写更多代码修改了问题,请帮助如何插入 VBN 代替 BN
    • 正如我添加的那样,您插入 VBN 我认为使用 Keras 功能 API 而不是 Keras Sequential API 会更好吗?原因是VBN.__init__() 方法需要reference_batch 参数。当您使用 Sequential API 时,您会执行 model.add(VBN(**kwargs)) 之类的操作,但这会引发错误,因此您最好执行以下操作:inputs = Input(your_inputs), dense = Dense(256)(inputs) .... vbn = VBN(leaky_relu, **kwargs)
    • 我认为 VBN 没有将输出作为张量输出
    • from keras.layers import Input, Dense, Activation; from keras.models import Model ; inputs = Input(shape=(784,)); x = Dense(64)(inputs); x = Activation('relu')(x); x = VBN(x); x = Dense(64, activation='relu')(x); predictions = Dense(10, activation='softmax')(x); model = Model(inputs=inputs, outputs=predictions); model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy']); model.summary()
    • 在运行上面的代码后得到`ValueError:Layer dense_31被调用了一个不是符号张量的输入。接收类型:main.VBN'>。完整输入:[<__main__.vbn object at>]。该层的所有输入都应该是张量。 `
    猜你喜欢
    • 2017-10-21
    • 2018-11-27
    • 1970-01-01
    • 2019-05-23
    • 2018-07-28
    • 2019-10-07
    • 2018-03-01
    • 2020-01-15
    • 2019-10-30
    相关资源
    最近更新 更多