Current section

Files

Jump to
deeppipe2 lib iris.ex
Raw

lib/iris.ex

defmodule Iris do
import Network
alias Deeppipe, as: DP
@moduledoc """
test with iris dataset
"""
defnetwork init_network0(_x) do
_x
|> w(4, 100)
|> b(100)
|> relu
|> w(100, 50)
|> b(50)
|> relu
|> w(50, 3)
|> b(3)
|> softmax
end
def sgd(m, n) do
image = train_image()
onehot = train_label_onehot()
network = init_network0(0)
test_image = image
test_label = train_label()
DP.train(network, image, onehot, test_image, test_label, :cross, :sgd, m, n)
end
def train_image() do
{_, x} = File.read("iris/iris.data")
x
|> String.split("\n")
|> Enum.take(150)
|> Enum.map(fn y -> train_image1(y) end)
end
def train_image1(x) do
x1 = x |> String.split(",") |> Enum.take(4)
x1
|> Enum.map(fn y -> String.to_float(y) end)
|> DP.normalize(0, 1)
end
def train_label() do
{_, x} = File.read("iris/iris.data")
x
|> String.split("\n")
|> Enum.take(150)
|> Enum.map(fn y -> train_label1(y) end)
end
def train_label1(x) do
[x1] = x |> String.split(",") |> Enum.drop(4)
cond do
x1 == "Iris-setosa" -> 0
x1 == "Iris-versicolor" -> 1
x1 == "Iris-virginica" -> 2
end
end
def train_label_onehot() do
train_label() |> Enum.map(fn x -> DP.to_onehot(x, 2) end)
end
end