Advertisement
ArtemkaKun

NN.jl

Apr 9th, 2020
2,663
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Julia 1.11 KB | None | 0 0
  1. include("NNData.jl")
  2. include("RealNames.jl")
  3.  
  4. using CUDAnative
  5. using Flux
  6. using Flux.Data
  7. using Flux: crossentropy, normalise, onecold, onehotbatch, data
  8. using Statistics: mean
  9.  
  10. function TrainNN()
  11.     model = Chain(RNN(2371, length(GetRealNames())), softmax)
  12.  
  13.     model = gpu(model)
  14.  
  15.     loss(x, y) = crossentropy(model(x), y)
  16.  
  17.     optimiser = ADAM(0.01)
  18.  
  19.     datas = zip(gpu(_trainDataX), gpu(_trainDataY))
  20.  
  21.     for e = 0:4
  22.         println("Epoch: $e")
  23.  
  24.         Flux.train!(loss, params(model), datas, optimiser)
  25.     end
  26.  
  27.     CalcAccuracy(model)
  28. end
  29.  
  30. function CalcAccuracy(nn)
  31.     accuracy_buffer = Vector{Int64}()
  32.  
  33.     for one in _testDataX
  34.         push!(
  35.             accuracy_buffer,
  36.             findfirst(isequal(max(cpu(nn(one))...)), cpu(nn(one))),
  37.         )
  38.     end
  39.  
  40.     accuracy_mean = 0.0
  41.  
  42.     for one in accuracy_buffer
  43.         if one == findfirst(isequal(1), _testDataY)
  44.             accuracy_mean += 1
  45.         else
  46.             accuracy_mean += 0
  47.         end
  48.     end
  49.  
  50.     accuracy_score = accuracy_mean / length(_testDataY)
  51.  
  52.     println("\nAccuracy: $accuracy_score")
  53. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement