Packages

A simple implementation of a neural network in elixir.

Current section

Files

Jump to
ex_neural_network lib ex_neural_network.ex
Raw

lib/ex_neural_network.ex

defmodule ExNeuralNetwork do
@moduledoc """
Documentation for `NeuralNetwork`.
"""
defmacro __using__(_) do
quote do
alias ExNeuralNetwork.Impl
alias ExNeuralNetwork.Server
@server ExNeuralNetwork.Server
@spec start_link(Integer.t(), [Integer.t()], Integer.t(), Float.t()) ::
{:ok, any} | {:error, any}
def start_link(input_nodes, hidden_layers, output_nodes, learning_rate) do
network = Impl.get_initial_network(input_nodes, hidden_layers, output_nodes)
state = Server.get_inital_state(network, learning_rate)
GenServer.start_link(@server, state, name: __MODULE__)
end
def query(input) do
GenServer.call(__MODULE__, {:query, input})
end
def train(input, target) do
GenServer.call(__MODULE__, {:train, input, target})
end
def get_network() do
GenServer.call(__MODULE__, :get_network)
end
def set_network(network) do
GenServer.cast(__MODULE__, {:set_network, network})
end
end
end
end