我的自定义丢失函数出现此错误:ValueError:不支持任何值。
输出是二进制数字的二维数组(2000,2)。 我只需要计算某些条目的准确性(由NN选择),而不是整个集合。
这是我的损失功能以及我是如何做到的:
def getBalance(x_true, x_pred):
##Selected entries for calculation
x_pred = K.tf.round(x_pred)
trade_index = K.tf.not_equal(x_pred[:,1], 0 )
x_true_tradeable = K.tf.boolean_mask(x_true[:,0], trade_index)
x_pred_tradeable = K.tf.boolean_mask(x_pred[:,0], trade_index)
Accuracy = K.mean(K.equal(x_true_tradeable, x_pred_tradeable))
return Accuracy
这是我的模型供参考:
model = Sequential()
model.add(Dropout(0.4, input_shape=(train_input_data_NN.shape[1], train_input_data_NN.shape[2])))
model.add(LSTM(30, dropout=0.4, recurrent_dropout=0.4, return_sequences=False))
model.add(Dense(2, activation='sigmoid'))
model.compile(loss='getBalance', optimizer='adam')
history = model.fit(train_input_data_NN, outputs_NN, epochs=50, batch_size=64, verbose=1, validation_data=(test_input_data_NN, outputs_NN_test))