Skip to content

Instantly share code, notes, and snippets.

@demacdolincoln
Created February 10, 2018 19:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save demacdolincoln/b778f74345d1da5822a32c9deb012383 to your computer and use it in GitHub Desktop.
Save demacdolincoln/b778f74345d1da5822a32c9deb012383 to your computer and use it in GitHub Desktop.
addprocs(3)
global dim = 2
################################################################################
# preparando a base de dados #
################################################################################
lin = 3 # linhas
col = 10000 # colunas
trein = SharedArray{Float64}(lin, col)
info("iniciando amostras de treinamento")
@parallel for i = 1:col
trein[1,i] = i > col/2 ? rand(-100:0)* rand() : rand(0:100)*rand()
trein[2,i] = i > col/2 ? rand(-100:0)* rand() : rand(0:100)*rand()
trein[3,i] = i > col/2 ? 1 : 0
end
################################################################################
# preparando os pesos #
################################################################################
info("iniciando pesos")
global pesos = SharedArray{Float64}(2)
#pesos[1], pesos[2] = rand(),rand()
pesos[1], pesos[2] = 99,88
#### Entrada Ponderada
#
#f(x) = ∑(entrada × peso)
@everywhere pondera(entradas, pesos) = sum(entradas .* pesos)
#### Linear Function
#
#x > 0 ? 1 : 0
@everywhere ativacao(entPond) = entPond > 0 ? 1 : 0
@doc """
### treinamento
```ω = ω + η × (e - r) × a```
onde:
* ω : peso
* η : constante de aprendizado (padrao 0.0001)
* e : resultado esperado
* r : resultado obtido
* a : valor da amostra atual
""" ->
function treinamento(trein::SharedArray,pesos::SharedArray, η::Float64=0.0001, epoch::Int=1000)
dimsTrein = size(trein)
@async @parallel for epoca = 1:epoch
for i in 1:dimsTrein[2]
amostra = trein[:, i]
p = pondera(amostra[1:2], pesos)
r = ativacao(p)
@sync for j = 1:dim
pesos[j] = pesos[j] .+ η*(amostra[3]- r) .* amostra[j]
end
end
if epoca % 100 == 0
println("| $epoca | ")
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment