我有下面的型号
inputs = Input(shape=(8)) # 8 groessen als eingabe
x = Reshape((8, 1))(inputs)
# generator
x = Bidirectional(LSTM(32, return_sequences=True))(x)
x = Bidirectional(LSTM(64, return_sequences=True))(x)
generated = LSTM(4, return_sequences=True, activation="sigmoid")(x)
# rating
x = Bidirectional(LSTM(128, return_sequences=True))(generated)
x = Bidirectional(LSTM(128))(x)
x = Flatten()(x)
x = Dense(16, activation="relu")(x)
rating = Dense(8, activation="relu")(x)
model = Model(inputs=inputs, outputs=[rating, generated])
return model
我给模型输入一个序列(8,),生成器应该从这个序列中创建一个新的序列(8,4),满足一些条件。有很多输出可以满足这个条件,但我的发电机应该只取一个它喜欢的。
然后我将生成的序列输入到下一层,在那里我计算这个输出的值(8),以便在应用损失函数时能够得到梯度
rating, generated = model(model_input, training=True)
calculated_rating = my_numeric_function(np.array(generated))
loss_1 = mse(model_input, rating) # the rating-loss
loss_2 = mse(calculated_rating , rating) # the loss between rating and generator
metric = mse(model_input, calculated_rating) # metric: difference between model input and real calculated
tape.gradient(loss_1+loss_2, model.trainable_weights)
我的损失1和损失2正在减少,但度量(计算的\u评级-生成的)保持完全相同。
在反向传播中,我的损失函数似乎不允许改变生成器层的权重。
指标没有减少的原因可能是什么(保持在51-52左右)
暂无答案!
目前还没有任何答案,快来回答吧!