Packages

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

Current section

Files

Jump to
gleam_synapses src gleam_synapses@model@net_elems@neuron@neuron_serialized.erl
Raw

src/gleam_synapses@model@net_elems@neuron@neuron_serialized.erl

-module(gleam_synapses@model@net_elems@neuron@neuron_serialized).
-compile(no_auto_import).
-export([serialized/1, deserialized/1, json_encoded/1, json_decoder/0]).
-export_type([neuron_serialized/0]).
-type neuron_serialized() :: {neuron_serialized, binary(), list(float())}.
-spec serialized(gleam_synapses@model@net_elems@neuron@neuron:neuron()) -> neuron_serialized().
serialized(Neuron) ->
{neuron_serialized,
gleam_synapses@model@net_elems@activation@activation_serialized:serialized(
erlang:element(2, Neuron)
),
gleam_zlists:to_list(erlang:element(3, Neuron))}.
-spec deserialized(neuron_serialized()) -> gleam_synapses@model@net_elems@neuron@neuron:neuron().
deserialized(Neuron_serialized) ->
{neuron,
gleam_synapses@model@net_elems@activation@activation_serialized:deserialized(
erlang:element(2, Neuron_serialized)
),
gleam_zlists:of_list(erlang:element(3, Neuron_serialized))}.
-spec json_encoded(neuron_serialized()) -> gleam@json:json().
json_encoded(Neuron_serialized) ->
gleam@json:object(
[{<<"activationF"/utf8>>,
gleam_synapses@model@net_elems@activation@activation_serialized:json_encoded(
erlang:element(2, Neuron_serialized)
)},
{<<"weights"/utf8>>,
gleam@json:array(
erlang:element(3, Neuron_serialized),
fun gleam@json:float/1
)}]
).
-spec json_decoder() -> fun((gleam@dynamic:dynamic()) -> {ok,
neuron_serialized()} |
{error, list(gleam@dynamic:decode_error())}).
json_decoder() ->
gleam@dynamic:decode2(
fun(A, B) -> {neuron_serialized, A, B} end,
gleam@dynamic:field(
<<"activationF"/utf8>>,
gleam_synapses@model@net_elems@activation@activation_serialized:json_decoder(
)
),
gleam@dynamic:field(
<<"weights"/utf8>>,
gleam@dynamic:list(fun gleam@dynamic:float/1)
)
).