断言在神经网络中做什么?
what assert do in the neural network?
我看到了神经网络某些层之间的断言层。
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
这个断言有什么作用?这是必要的吗?
断言正如其名,断言!
在 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 的形状,否则会抛出错误。
这有助于防止由于尺寸不匹配而导致下一行代码出现问题,因此如果您删除它,则不会发生任何事情,但如果尺寸不是您期望的,您将不会被注意到。
我看到了神经网络某些层之间的断言层。
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
这个断言有什么作用?这是必要的吗?
断言正如其名,断言! 在 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 的形状,否则会抛出错误。 这有助于防止由于尺寸不匹配而导致下一行代码出现问题,因此如果您删除它,则不会发生任何事情,但如果尺寸不是您期望的,您将不会被注意到。