Powered by AppSignal & Oban Pro
Would you like to see your link here? Contact us

Salary predictions

salary_prediction.livemd

Salary predictions

Dependencies

Mix.install([
  {:exla, "~> 0.1.0-dev", github: "elixir-nx/nx", sparse: "exla"},
  {:nx, "~> 0.1.0-dev", github: "elixir-nx/nx", sparse: "nx", override: true},
  {:axon, "~> 0.1.0-dev", github: "elixir-nx/axon"}
])
x = Nx.tensor([[2011], [2012], [2013], [2014], [2015], [2016], [2017], [2018], [2019], [2020]])

y =
  Nx.tensor([
    [3400],
    [3522],
    [3650],
    [3783],
    [3900],
    [4047],
    [4271],
    [4585],
    [4918],
    [5167]
  ])

x = Nx.subtract(x, 2015)
y = Nx.log(y)
require Axon

model =
  Axon.input({10, 1})
  |> Axon.dense(1, activation: :linear)
start = :erlang.now()

{trained_params, _} =
  model
  |> Axon.Training.step(:mean_squared_error, Axon.Optimizers.sgd(0.01))
  |> Axon.Training.train([x], [y], epochs: 3000, compiler: EXLA)

:timer.now_diff(:erlang.now(), start)
a =
  Axon.predict(model, trained_params, Nx.tensor([[2030 - 2015]], type: {:f, 32}), compiler: EXLA)

Nx.power(Nx.exp(1), a)