使用keras,我从'tanh'激活功能获得了错误的输出。它应该使浮点数在[-1,1]范围内,但是我得到的输出在[-10,10]范围内。这里有什么问题?谢谢。
这是模型结构:
def create_generator(dim=NOISE_DIM, optimizer=GEN_OPTIMIZER):
generator = Sequential()
# Starting size
d = 4
generator.add(Dense(d*d*256, kernel_initializer=RandomNormal(0, 0.02), input_dim=dim))
generator.add(LeakyReLU(0.2))
# 4x4x256
generator.add(Reshape((d, d, 256)))
# 8x8x128
generator.add(Conv2DTranspose(128, (4, 4), strides=2, padding='same', kernel_initializer=RandomNormal(0, 0.02)))
generator.add(LeakyReLU(0.2))
# 16x16*128
generator.add(Conv2DTranspose(128, (4, 4), strides=4, padding='same', kernel_initializer=RandomNormal(0, 0.02)))
generator.add(LeakyReLU(0.2))
# 64x64x128
generator.add(Conv2DTranspose(128, (4, 4), strides=2, padding='same', kernel_initializer=RandomNormal(0, 0.02)))
generator.add(LeakyReLU(0.2))
# 64x64x3
generator.add(Conv2D(3, (3, 3), padding='same', activation='tanh', kernel_initializer=RandomNormal(0, 0.02)))
generator.compile(loss='binary_crossentropy', optimizer=optimizer)
return generator
输出示例:
...
[[-1.31739629e-03 -9.18284408e-04 -8.88809795e-04]
[ 5.84446476e-04 1.48985186e-03 -8.59379943e-04]
[ 1.28604515e-04 -2.04776973e-03 -6.45169814e-04]
...
[-1.10365311e-03 4.84788558e-04 -1.07841019e-03]
[-1.61853048e-03 2.44487106e-04 -2.03575328e-04]
[-1.30298943e-03 1.26789114e-03 -6.83081045e-04]]
[[-3.66462773e-04 -2.87405564e-04 -3.52254836e-04]
[-7.28385407e-04 3.68534849e-04 9.69631219e-05]
[-1.90682462e-04 6.41632010e-04 -1.34694483e-03]
...
[-1.31186307e-03 -2.17378582e-03 1.81564025e-03]
[-1.35134242e-03 4.37091017e-04 3.16255668e-04]
[-1.82685023e-03 -4.86125617e-04 5.67631563e-04]]
[[-7.98511028e-04 -8.82301887e-04 -1.65282312e-04]
[-1.44832267e-03 -6.28359208e-04 -9.62364720e-04]
[-2.95009726e-04 1.77540205e-04 -1.48139487e-04]
...
[-6.42001803e-04 4.31965804e-04 6.40484213e-04]
[-1.32995576e-03 8.39460583e-04 -3.31234711e-04]
[ 5.94170066e-04 3.08730640e-04 8.76617676e-04]]]]
答案 0 :(得分:1)
所以您在这里遇到的是科学计数法。
在Python中,科学符号只是一种格式,而值只是一个浮点数,因此您可以执行以下操作:
>>> print(-1.31739629e-03)
-0.00131739629
由于e后面的数字为负,因此将小数点向左移动。这意味着您的输出都不会小于-1或大于1。