Я создаю собственную модель нейронной сети. Это простейшая модель, называемая многослойным персептроном (MLP).
Я думаю, что здесь проблема с цепочкой.
веса — это небольшие числа, такие как значения нейронов и смещения.
Иногда получаются большие числа, например 50 или 100, когда я складываю все значения нейронов, которые умножаются на веса, а также добавляю смещения. .
Expit() (сигмоид) этих больших чисел возвращает ровно 1.
В функции обратного распространения ошибки я использую logit (), чтобы получить производную значений нейрона. поэтому logit(1) возвращает np.inf.
На следующей итерации некоторые из этих значений inf умножаются на отрицательные веса и получают -inf.
Значения-inf добавляются к значениям inf, которые составляют nan.
nan * everything = nan или nan + Everything = nan, поэтому nan достаточно для получения всех значений матриц nan.
как можно Я это исправлю? Прав ли я относительно типа существующей проблемы? Есть ли какие-либо проблемы с кодом, которые я должен знать?
вот код:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from scipy.special import expit, logit, softmax
Я создаю собственную модель нейронной сети. Это простейшая модель, называемая многослойным персептроном (MLP). Я думаю, что здесь проблема с цепочкой. [list] [*]веса — это небольшие числа, такие как значения нейронов и смещения. [*]Иногда получаются большие числа, например 50 или 100, когда я складываю все значения нейронов, которые умножаются на веса, а также добавляю смещения. . [*]Expit() (сигмоид) этих больших чисел возвращает ровно 1. [*]В функции обратного распространения ошибки я использую logit (), чтобы получить производную значений нейрона. поэтому logit(1) возвращает np.inf. [*]На следующей итерации некоторые из этих значений inf умножаются на отрицательные веса и получают -inf. Значения-inf добавляются к значениям inf, которые составляют nan. [*]nan * everything = nan или nan + Everything = nan, поэтому nan достаточно для получения всех значений матриц nan. [/list] как можно Я это исправлю? Прав ли я относительно типа существующей проблемы? Есть ли какие-либо проблемы с кодом, которые я должен знать? вот код: import pandas as pd import numpy as np import matplotlib.pyplot as plt from scipy.special import expit, logit, softmax
Я обнаружил странное поведение функций log в C++ и numpy о поведении функции log, обрабатывающей сложные бесконечные числа. В частности, log(inf + inf * 1j) равен (inf + 0.785398j), хотя я ожидаю, что это будет (inf + nan * 1j).
При логарифме...
Я нахожу странное поведение функций log в C ++ и Numpy о поведении журнала Обработка функций. Сложные бесконечные числа. В частности, log (inf + inf * 1j) equals (inf + 0.785398j) , когда я ожидаю, что он будет (inf + nan * 1j) .
при получении...
В документации TensorFlow (SoftMax_Cross_Entropy_with_logits) они сказали «logits: uncaled log вероятность». Что такое «вероятность журнала»?
Во -первых, я понимаю, что «logits» является «выходом перед нормализацией» или «оценка для класса» ....
Я хочу добавить tf.keras.layers.MultiHeadAttention внутри двух слоев нейронной сети. Однако я получаю IndexError:
Подробный код следующий
x1 = Dense(58, activation='relu')(x1)
x1 = Dropout(0.1)(x1)
print(x1.shape)
attention =...
У меня есть ситуация, когда разумно иметь деление на 0,0 или на -0,0, и я ожидаю увидеть в качестве результатов +Inf и -Inf соответственно. Кажется, Python любит устраивать