Проблема с несоответствием выходных данных прямого распространения несмотря на правильную инициализацию и форму параметрPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Проблема с несоответствием выходных данных прямого распространения несмотря на правильную инициализацию и форму параметр

Сообщение Anonymous »

Я работаю над заданием нейронной сети для своего курса и столкнулся с проблемой, когда выходные данные прямого распространения (A2) не соответствуют ожидаемым результатам. Несмотря на использование правильной инициализации параметров и обеспечение правильной формы параметров, выходные данные не соответствуют ожидаемым значениям функции грейдера. Я использую фиксированную среду тестирования, которую не могу изменить (как того требует курс).
Я реализую базовую нейронную сеть с одним скрытым слоем. Функция оценки сравнивает выходные данные моей модели (в частности, A2) с ожидаемыми значениями, но она терпит неудачу из-за несоответствия выходных данных на этапе прямого распространения. Кажется, проблема связана с инициализацией параметров или с тем, как выполняется прямое распространение, но я не могу изменить саму среду тестирования.
КОД:
  • Функция инициализации параметров (initialize_parameters):

Код: Выделить всё

def initialize_parameters(n_x, n_h, n_y):
np.random.seed(2)
W1 = np.random.randn(n_h, n_x) * 0.01  # n_h=4, n_x=2
b1 = np.zeros((4, 1))
W2 = np.random.randn(n_y, n_h) * 0.01  # n_y=1, n_h=4
b2 = np.zeros((1, 1))
parameters = {"W1": W1, "b1": b1, "W2": W2, "b2": b2}
return parameters
Здесь W1 имеет форму (4, 2), b1 имеет форму (4, 1), < em>W2 имеет форму (1, 4), а b2 имеет форму (1, 1).
  • Функция прямого распространения (forward_propagation):

Код: Выделить всё

def forward_propagation(X, parameters):
W1 = parameters['W1']
b1 = parameters['b1']
W2 = parameters['W2']
b2 = parameters['b2']
Z1 = np.dot(W1, X) + b1
A1 = sigmoid(Z1)
Z2 = np.dot(W2, A1) + b2
A2 = sigmoid(Z2)
assert A2.shape == (1, X.shape[1])
cache = {"Z1": Z1, "A1": A1, "Z2": Z2, "A2": A2}
return A2, cache
(обратите внимание, что я уже заранее правильно определил сигмовидную функцию в функции)
Здесь форма A2 после прямого распространения равна ( 1, 3) (что кажется правильным, учитывая размер входных данных (2, 3)).
Однако выходные данные A2 не соответствуют ожидаемым значениям для тестового примера. Ожидаемый результат A2 должен быть следующим:
A2 = [[0.21292656 0.21274673 0.21295976]]
Но я получаю:
A2 = [[0.21442387 0.21436745 0.21442857]]
Среда тестирования:
  • Функция оценки предварительно определена и сравнивает A2 с ожидаемыми значениями. Я не могу изменить функцию оценивания или тестовые примеры, представленные в курсе.
  • Функция оценивания ожидает, что A2 будет точно соответствовать ожидаемому результату. Я пробовал различные случайные начальные числа (например, np.random.seed(42)), но результат все равно не совпадает.
Что Я попробовал:
  • Убедился, что формы весовых матриц и векторов смещения правильные.
    < li>Распечатал фигуры Z1, A1, Z2 и A2 на каждом этапе.
    Использовал np.random.seed(42) и np.random.seed(2) при инициализации, но это не решило проблему.
Может ли быть проблема со случайной инициализацией, влияющая на согласованность вывода?

Подробнее здесь: https://stackoverflow.com/questions/792 ... ization-an
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»