From f6f4ebfbdfe578fe03ad540e8da0f67cf52d9b9a Mon Sep 17 00:00:00 2001 From: Vsevolod Stakhov Date: Wed, 4 Oct 2017 20:27:01 +0100 Subject: [PATCH] [Minor] Filter NaN values when storing training data --- src/plugins/lua/fann_redis.lua | 27 +++++++++++++++++---------- 1 file changed, 17 insertions(+), 10 deletions(-) diff --git a/src/plugins/lua/fann_redis.lua b/src/plugins/lua/fann_redis.lua index 42e05f1ac..cf6555558 100644 --- a/src/plugins/lua/fann_redis.lua +++ b/src/plugins/lua/fann_redis.lua @@ -566,17 +566,24 @@ local function fann_train_callback(rule, task, score, required_score, id) local mt = meta_functions.rspamd_gen_metatokens(task) -- Add filtered meta tokens fun.each(function(e) table.insert(fann_data, e) end, mt) - local str = rspamd_util.zstd_compress(table.concat(fann_data, ';')) - vec_len = #str + -- Check NaNs in train data + if fun.all(function(e) return e == e end, fann_data) then + local str = rspamd_util.zstd_compress(table.concat(fann_data, ';')) + vec_len = #str + + rspamd_redis.redis_make_request(task, + rule.redis, + nil, + true, -- is write + learn_vec_cb, --callback + 'LPUSH', -- command + {fname .. '_' .. k, str} -- arguments + ) + else + rspamd_logger.errx(task, "do not store learn vector as it contains %s NaN values", + fun.length(fun.filter(function(e) return e ~= e end, fann_data))) + end - rspamd_redis.redis_make_request(task, - rule.redis, - nil, - true, -- is write - learn_vec_cb, --callback - 'LPUSH', -- command - {fname .. '_' .. k, str} -- arguments - ) else if err then rspamd_logger.errx(task, 'cannot check if we can train %s: %s', fname, err) -- 2.39.5