Почему моя программа на Python работает бесконечно и не дает результатов - PullRequest
0 голосов
/ 10 июля 2019

Я реализую алгоритм, который предлагает новый подход к искусственным нейронным сетям (вот справка, если вы хотите проверить это: Ghiassi, Manoochehr и H. Saidane. «Динамическая архитектура для искусственных нейронных сетей». Neurocomputing 63 (2005): 397-413).

Я запускаю код, и он работает более часа без каких-либо ошибок и результатов.Не могли бы вы помочь мне определить, почему?

Я запустил код в коллаборации Google, используя GPU, TPU и None.Также я использовал Kaggle Kernels, я искал бесконечный цикл, но, похоже, ничего не нашел.Вроде бы все нормально, но это не дает результатов.

#### Training the model ####

# Initialization

a0 = b00 = b01 = a = b = c = d = 0

epsilon = 0.001
mse_best = 10^(6)
mse_target = np.exp(-50)
layer_num = 0
Forecast = []
angmatr = []

# Initial linear layer

Model = LinearRegression().fit(InputData,OutputData)
a0 = Model.intercept_
A0 = a0*np.ones(np.shape(InputData)[0])
F0 = A0 + np.dot(InputData,Model.coef_)
mse = mean_squared_error(OutputData,F0)
if(mse < mse_best):
  mse_best = mse

# Save the architecture
coef = []
coef.append(a0)
for i in range(len(Model.coef_)):
  coef.append(Model.coef_[i])
O = []
O.append(coef)
Forecast = F0
F1 = F0

for i in range(np.shape(InputData)[0]):
  X = np.array(InputData[i][:]).reshape(-1,1)
  Cosine = np.dot(R,X)/(np.linalg.norm(R)*np.linalg.norm(X))
  angle = np.arccos(Cosine)
  angmatr.append(angle)

# Compute hidden layer(s)
while (mse_best > mse_target) :
  µ = 1
  µ_best = 0
  layer_num += 1
  while (µ < µ_max) & (mse_best > mse_target):
    G = []
    H = []
    for i in range(len(angmatr)):
      angle = angmatr[i]
      G.extend(np.cos(µ*angle))
      H.extend(np.sin(µ*angle))

    Input = np.asarray([F1,G,H]).T


    Model = LinearRegression().fit(Input,OutputData)
    a = Model.intercept_
    A = a*np.ones(np.shape(InputData)[0])
    F = A + np.dot(Input,Model.coef_)
    F1 = F
    coef = []
    coef.append(a)
    for i in range(len(Model.coef_)):
      coef.append(Model.coef_[i])

    mse = mean_squared_error(OutputData,F)
    if(mse < mse_best):
      mse_best = mse
      µ_best = µ
      Forecast = F
    else:
      µ = µ + epsilon
  O.append(coef)

DAN2_model = O

Я ожидаю найти коэффициенты узлов слоев сети в переменной 'DAN2_model', а также количество слоев, сгенерированных в 'layer_num 'переменная.

Заранее спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...