Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from math import cos, sin, exp, tanh
- from random import random
- from sampling import sampling
- F = lambda S: 1 / (1+exp(-S))
- alpha = 0.1
- Emin = 0.003
- E = Emin + 1
- M = 150
- K = 6
- I = 10
- J = 3
- sX = sampling(M)
- M *= 3
- sqx = sum([x**2 for x in sX[::3]]) ** 0.5
- sqy = sum([x**2 for x in sX[1::3]]) ** 0.5
- sqz = sum([x**2 for x in sX[2::3]]) ** 0.5
- for i in range(0, M, 3):
- sX[i] /= sqx
- sX[i+1] /= sqy
- sX[i+2] /= sqz
- Wki = [[random() for i in range(I)] for k in range(K)]
- Wij = [[random() for i in range(J)] for k in range(I)]
- Ti = [random() for i in range(I)]
- Tj = [random() for i in range(J)]
- itns = 0
- while E > Emin:
- X = sX[:K]
- itns += 1
- E = 0
- for r in range(0, M-K, 3):
- Yi = [F(sum([Wki[k][i] * X[r+k] for k in range(K)]) - Ti[i]) for i in range(I)]
- Yj = [sum([Wij[i][j] * Yi[i] for i in range(I)]) - Tj[j] for j in range(J)]
- X += list(map(abs, Yj))
- Ej = [Yj[j] - sX[r+K+j] for j in range(J)]
- Wij = [[Wij[i][j] - alpha * Ej[j] * Yi[i] for j in range(J)] for i in range(I)]
- Tj = [Tj[j] + alpha * Ej[j] for j in range(J)]
- Ei = [sum([Ej[j] * Yj[j]*(1-Yj[j]) * Wij[i][j] for j in range(J)]) for i in range(I)]
- Wki = [[Wki[k][i] - alpha * Ei[i] * Yi[i]*(1-Yi[i]) * X[r+k] for i in range(I)] for k in range(K)]
- Ti = [Ti[i] + alpha * Ei[i] * Yi[i]*(1-Yi[i]) for i in range(I)]
- E += sum([Ej[j] ** 2 for j in range(J)])
- E /= 2
- print(E, "\n")
- pred = sX[:K]
- for r in range(0, M-K, 3):
- Yi = [F(sum([Wki[k][i] * X[r+k] for k in range(K)]) - Ti[i]) for i in range(I)]
- Yj = [sum([Wij[i][j] * Yi[i] for i in range(I)]) - Tj[j] for j in range(J)]
- pred += list(map(abs, Yj))
- for i in range(0, M, 3):
- print(str(pred[i]*sqx).replace('.', ','))
- print("---------------------------\n"*3)
- for i in range(1, M, 3):
- print(str(pred[i]*sqy).replace('.', ','))
- print("---------------------------\n"*3)
- for i in range(2, M, 3):
- print(str(pred[i]*sqz).replace('.', ','))
- print("\n", itns)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement