在神经网络中有什么断言?

时间:2019-05-01 06:42:10

标签: python neural-network conv-neural-network tensorflow2.0

我看到了NN某些层之间的断言层。

model = tf.keras.Sequential()
    model.add(layers.Dense(7*7*256, use_bias=False, input_shape=(100,)))
    model.add(layers.BatchNormalization())
    model.add(layers.LeakyReLU())

    model.add(layers.Reshape((7, 7, 256)))
    assert model.output_shape == (None, 7, 7, 256) # Note: None is the batch size

这个断言做什么?这是必要的吗?

https://www.tensorflow.org/alpha/tutorials/generative/dcgan

1 个答案:

答案 0 :(得分:2)

Assertion恰如其名所言,Assertion! 在python中,我们使用“ assert”命令来确保语句是否完全等于我们的期望。看一下这个简单的代码:

a = 2
b = 3
assert a + b == 5

这部分代码可以正常运行,因为a + b正是我们期望的5。但是,如果您以这种方式更改代码,则:

assert a + b == 6 # 6 or other any number except 5,It doesn't matter

代码将引发断言错误,因为a + b!= 6 ... 您提到的代码中的assertion命令检查模型的输出是否正好是7 * 7 * 256的形状,否则将引发错误。  这对于防止由于尺寸不匹配而导致的下一行代码中可能出现的问题很有用,因此,如果删除它,则什么也不会发生,但是如果尺寸不是您期望的尺寸,则不会引起您的注意。