Случайное семя по всей тетради Jupyter - PullRequest
0 голосов
/ 19 января 2020

(Примечание: я знаю, что подобный вопрос был задан здесь , но предоставленные ответы не касались вопроса о семени, постоянно поддерживаемом в записной книжке Jupyter.)

I ' я пытаюсь запустить код, основанный на определенном семени в блокноте Jupyter. Мой первый код:

np.random.seed(42)

X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1) # 4 + 3X + noise
X_b = np.c_[np.ones((100,1)), X] # concatenate x0 = 1 to each instance
theta_best = np.linalg.inv(X_b.T.dot(X_b)).dot(X_b.T).dot(y)
theta_best

, который выводит

array([[4.21509616],
       [2.77011339]])

Lovely.

Теперь, когда я запускаю следующий код градиентного спуска в другой ячейке:

X = 2 * np.random.rand(100, 1)
y = 4 + 3 * X + np.random.randn(100, 1)
X_b = np.c_[np.ones((100,1)), X] # concatenate x0 = 1 to each instance

eta = 0.1 # learning rate
n_iterations = 1000
m = 100

theta = np.random.randn(2,1) # random initialization

for iteration in range(n_iterations):
    gradients = 2/m * X_b.T.dot(X_b.dot(theta) - y) # the equation of the gradient vector from above
    theta = theta - eta * gradients # next step of theta
print(theta)

Я должен вывести те же результаты, что и выше. Единственная причина, по которой я этого не делаю, заключается в том, что rand() основан на другом семени. (Вы можете спросить, почему я повторил определения переменных, но это не имеет отношения к рассматриваемому вопросу.) Единственный способ получить последовательный вывод - это переопределить начальное значение в np.random.seed(42) до градиентного спуска. Есть ли способ установить np.random.seed() для всего ноутбука Jupyter?

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