Current section
Files
Jump to
Current section
Files
gen/src/gleam_synapses@model@net_elems@layer.erl
-module(gleam_synapses@model@net_elems@layer).
-compile(no_auto_import).
-export([init/4, output/2, back_propagated/4, serialized/1, deserialized/1, json_encoded/1, json_decoder/0, generator/2]).
-spec init(
integer(),
integer(),
gleam_synapses@model@net_elems@activation:activation(),
fun(() -> fun(() -> float()))
) -> gleam_zlists@interop:z_list(gleam_synapses@model@net_elems@neuron:neuron()).
init(Input_size, Output_size, Activation_f, Weight_init_f) ->
gleam_zlists:map(
gleam_zlists:take(gleam_zlists:indices(), Output_size),
fun(_) ->
gleam_synapses@model@net_elems@neuron:init(
Input_size,
Activation_f,
Weight_init_f()
)
end
).
-spec output(
gleam_zlists@interop:z_list(gleam_synapses@model@net_elems@neuron:neuron()),
gleam_zlists@interop:z_list(float())
) -> gleam_zlists@interop:z_list(float()).
output(Layer, Input_val) ->
gleam_zlists:map(
Layer,
fun(X) -> gleam_synapses@model@net_elems@neuron:output(X, Input_val) end
).
-spec back_propagated(
gleam_zlists@interop:z_list(gleam_synapses@model@net_elems@neuron:neuron()),
float(),
gleam_zlists@interop:z_list(float()),
gleam_zlists@interop:z_list({float(), float()})
) -> {gleam_zlists@interop:z_list(float()),
gleam_zlists@interop:z_list(gleam_synapses@model@net_elems@neuron:neuron())}.
back_propagated(Layer, Learning_rate, Input_val, Output_with_error) ->
{Errors_multi, New_layer} = gleam_zlists:unzip(
gleam_zlists:map(
gleam_zlists:zip(Output_with_error, Layer),
fun(T) -> {A, B} = T,
gleam_synapses@model@net_elems@neuron:back_propagated(
B,
Learning_rate,
Input_val,
A
) end
)
),
Errors = gleam_zlists:reduce(
Errors_multi,
gleam_zlists:map(gleam_zlists:indices(), fun(_) -> 0.0 end),
fun(X, Acc) ->
gleam_zlists:map(
gleam_zlists:zip(Acc, X),
fun(T@1) -> {A@1, B@1} = T@1,
A@1 + B@1 end
)
end
),
{Errors, New_layer}.
-spec serialized(
gleam_zlists@interop:z_list(gleam_synapses@model@net_elems@neuron:neuron())
) -> list(gleam_synapses@model@net_elems@neuron:neuron_serialized()).
serialized(Layer) ->
gleam_zlists:to_list(
gleam_zlists:map(
Layer,
fun gleam_synapses@model@net_elems@neuron:serialized/1
)
).
-spec deserialized(
list(gleam_synapses@model@net_elems@neuron:neuron_serialized())
) -> gleam_zlists@interop:z_list(gleam_synapses@model@net_elems@neuron:neuron()).
deserialized(Layer_serialized) ->
gleam_zlists:map(
gleam_zlists:of_list(Layer_serialized),
fun gleam_synapses@model@net_elems@neuron:deserialized/1
).
-spec json_encoded(
list(gleam_synapses@model@net_elems@neuron:neuron_serialized())
) -> gleam_synapses@model@edited_jsone:json_value().
json_encoded(Layer_serialized) ->
gleam_synapses@model@edited_jsone:array(
Layer_serialized,
fun gleam_synapses@model@net_elems@neuron:json_encoded/1
).
-spec json_decoder() -> decode:decoder(list(gleam_synapses@model@net_elems@neuron:neuron_serialized())).
json_decoder() ->
decode:list(gleam_synapses@model@net_elems@neuron:json_decoder()).
-spec generator(integer(), integer()) -> minigen:generator(gleam_zlists@interop:z_list(gleam_synapses@model@net_elems@neuron:neuron())).
generator(Input_size, Output_size) ->
minigen:map(
minigen:list(
gleam_synapses@model@net_elems@neuron:generator(Input_size),
Output_size
),
fun gleam_zlists:of_list/1
).