将 Keras 层的输出与标量相乘
Multiply output of Keras layer with a scalar
如果这是一个构架不当的问题,请原谅。这恰好是我在这里的第一个问题。
假设我在 Keras 中有一个输出层,我想将最后一个值(sigmoid 激活的结果)乘以一个标量(比如 5)。
(我在这里附上了一个代码片段。假设包含所有必要的库/依赖项)
def create_model():
inp = Input(shape=(561,))
x = Dense(units=1024,input_dim=561)(inp)
x = LeakyReLU(0.2)(x)
x = Dropout(0.3)(x)
x = Dense(units=512)(x)
x = LeakyReLU(0.2)(x)
x = Dropout(0.3)(x)
x = Dense(units=256)(x)
x = LeakyReLU(0.2)(x)
x = Dense(units=1, activation='sigmoid')(x)
m = tf.convert_to_tensor(5) #creating a tensor of value = 5
o = Multiply()([x, m]) #trying to multiply x with o. Doesn't work though!
model = Model(inputs=[inp], outputs=[o])
model.compile(loss='binary_crossentropy', optimizer = Adam(lr=0.0002, beta_1=0.5))
return model
model = create_model()
model.summary()
我试过了,但出现“元组索引超出范围”错误。
如果有人能帮助我,我会很高兴(即将最后一层的输出与标量相乘)
检查 x 和 m 的 dimensions.The 维度不匹配。使用 Lambda 层而不是乘法。这绝对能解决你的问题。
如果这是一个构架不当的问题,请原谅。这恰好是我在这里的第一个问题。
假设我在 Keras 中有一个输出层,我想将最后一个值(sigmoid 激活的结果)乘以一个标量(比如 5)。
(我在这里附上了一个代码片段。假设包含所有必要的库/依赖项)
def create_model():
inp = Input(shape=(561,))
x = Dense(units=1024,input_dim=561)(inp)
x = LeakyReLU(0.2)(x)
x = Dropout(0.3)(x)
x = Dense(units=512)(x)
x = LeakyReLU(0.2)(x)
x = Dropout(0.3)(x)
x = Dense(units=256)(x)
x = LeakyReLU(0.2)(x)
x = Dense(units=1, activation='sigmoid')(x)
m = tf.convert_to_tensor(5) #creating a tensor of value = 5
o = Multiply()([x, m]) #trying to multiply x with o. Doesn't work though!
model = Model(inputs=[inp], outputs=[o])
model.compile(loss='binary_crossentropy', optimizer = Adam(lr=0.0002, beta_1=0.5))
return model
model = create_model()
model.summary()
我试过了,但出现“元组索引超出范围”错误。 如果有人能帮助我,我会很高兴(即将最后一层的输出与标量相乘)
检查 x 和 m 的 dimensions.The 维度不匹配。使用 Lambda 层而不是乘法。这绝对能解决你的问题。