Packages

A plug-and-play library for neural networks written in Gleam

Current section

Files

Jump to
gleam_synapses gen src gleam_synapses@model@encoding@discrete_attribute.erl
Raw

gen/src/gleam_synapses@model@encoding@discrete_attribute.erl

-module(gleam_synapses@model@encoding@discrete_attribute).
-compile(no_auto_import).
-export([updated/2, encode/2, decode/2, serialized/1, deserialized/1, json_encoded/1, json_decoder/0]).
-spec updated(
gleam_synapses@model@encoding@serialization:attribute(),
gleam@map:map_(binary(), binary())
) -> gleam_synapses@model@encoding@serialization:attribute().
updated(Discrete_attribute, Datapoint) ->
{discrete_attribute, Key, Values} = Discrete_attribute,
{ok, V} = gleam@map:get(Datapoint, Key),
Updated_values = case gleam_zlists:has_member(Values, V) of
true ->
Values;
false ->
gleam_zlists:cons(Values, V)
end,
{discrete_attribute, Key, Updated_values}.
-spec encode(gleam_synapses@model@encoding@serialization:attribute(), binary()) -> gleam_zlists@interop:z_list(float()).
encode(Discrete_attribute, Value) ->
{discrete_attribute, _, Values} = Discrete_attribute,
gleam_zlists:map(Values, fun(X) -> case X =:= Value of
true ->
1.0;
false ->
0.0
end end).
-spec decode(
gleam_synapses@model@encoding@serialization:attribute(),
gleam_zlists@interop:z_list(float())
) -> binary().
decode(Discrete_attribute, Encoded_values) ->
{discrete_attribute, _, Values} = Discrete_attribute,
{ok, {Hd, Tl}} = gleam_zlists:uncons(
gleam_zlists:zip(Values, Encoded_values)
),
gleam@pair:first(
gleam_zlists:reduce(Tl, Hd, fun(X, Acc) -> {_, X_float_val} = X,
{_, Acc_float_val} = Acc,
case X_float_val > Acc_float_val of
true ->
X;
false ->
Acc
end end)
).
-spec serialized(gleam_synapses@model@encoding@serialization:attribute()) -> gleam_synapses@model@encoding@serialization:attribute_serialized().
serialized(Discrete_attribute) ->
{discrete_attribute, Key, Values} = Discrete_attribute,
{discrete_attribute_serialized, Key, gleam_zlists:to_list(Values)}.
-spec deserialized(
gleam_synapses@model@encoding@serialization:attribute_serialized()
) -> gleam_synapses@model@encoding@serialization:attribute().
deserialized(Discrete_attribute_serialized) ->
{discrete_attribute_serialized, Key, Values} = Discrete_attribute_serialized,
{discrete_attribute, Key, gleam_zlists:of_list(Values)}.
-spec json_encoded(
gleam_synapses@model@encoding@serialization:attribute_serialized()
) -> gleam@jsone:json_value().
json_encoded(Discrete_attribute_serialized) ->
{discrete_attribute_serialized, Key, Values} = Discrete_attribute_serialized,
gleam@jsone:object(
[{<<"key"/utf8>>, gleam@jsone:string(Key)},
{<<"values"/utf8>>,
gleam@jsone:array(Values, fun gleam@jsone:string/1)}]
).
-spec json_decoder() -> decode:decoder(gleam_synapses@model@encoding@serialization:attribute_serialized()).
json_decoder() ->
decode:map2(
fun(A, B) -> {discrete_attribute_serialized, A, B} end,
decode:field(<<"key"/utf8>>, decode:string()),
decode:field(<<"values"/utf8>>, decode:list(decode:string()))
).