python - 断言在神经网络中做什么?

标签 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

最佳答案

断言正如其名,断言! 在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 ... 您提到的代码中的断言命令检查模型的输出是否完全符合 7 * 7 * 256 的形状,否则会引发错误。 这对于防止下一行代码中由于尺寸不匹配而可能出现的问题很有用,因此,如果删除它,什么也不会发生,但如果尺寸不是您期望的尺寸,您也不会被注意到。

关于python - 断言在神经网络中做什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55932517/

相关文章:

python - 是否有可能制作一个具有抽象基类字典的所有(或大部分)属性的Python字典?

python - 根据值将成对转换为具有不同行数的列表

python - Discord 机器人踢命令

python - 将 SHAP 瀑布图导出到数据框

python - 决定是否根据特征条件更新权重

python - 改变 tensorflow CNN 的 MNIST 形状

machine-learning - Keras 实现问题意外关键字参数 'axis'

python - 使用 Python Selenium 单击单选按钮

machine-learning - 如何在 TensorFlow 中为卷积层正确创建批量归一化层?

conv-neural-network - CNN中权重梯度的含义