#python #python-3.x #pandas #neural-network #jupyter-notebook
#питон #python-3.x #панды #нейронная сеть #jupyter-ноутбук #python
Вопрос:
Я создал цикл для имитации обучения нейронной сети, и я нахожу странным, что веса, которые сначала были присвоены как Int, превратились в серию
Выборка данных (Примечание: создано несколько выборок из одних и тех же строк, чтобы увеличить количество наблюдений до 100):
# x1 x2 y
data = [ [3.5, 1.5, 1],
[2.0, 1.0, 0],
[4.0, 1.5, 1],
[3.0, 1.0, 0],
[3.5, 0.5, 1],
[2.0, 0.5, 0],
[5.5, 1.0, 1],
[1.0, 1.0, 0] ]
#[4.5, 1.0, 1]
data = pd.DataFrame(data, columns = ["Length", "Width", "Class"])
data
Назначение переменных:
w1 = np.random.randn()
w2 = np.random.randn()
b = np.random.randn()
print(w1)
print(w2)
print(b)
Тренировочный Цикл:
learning_rate = 0.2
#costs = []
for x in range(50000):
z = train_data["Length"] * w1 train_data["Width"] b
preds = sigmoid(z)
target = train_data["Class"]
cost = np.square(preds - target)
derivcost_pred = 2 * (preds - target)
derivpred_sigp = sigmoid_p(z)
dcost_dz = derivcost_pred * derivpred_sigp
dz_dw1 = train_data["Length"]
dz_dw2 = train_data["Width"]
dz_db = 1
dcost_dw1 = dcost_dz * dz_dw1
dcost_dw2 = dcost_dz * dz_dw2
dcost_db = dcost_dz * dz_db
w1 = w1 - learning_rate * dcost_dw1
w2 = w2 - learning_rate * dcost_dw2
b = b - learning_rate * dcost_db
Мой вопрос здесь заключается в том, как получить последнее значение w1, w2, b, которое было обучено?
Кроме того, если я буду использовать серию, как я могу получить доступ к последнему значению вместо этого?
Наконец, дайте мне знать, если сделали что-то не так с циклом
Комментарии:
1. Всем привет, пожалуйста, опубликуйте несколько примеров данных для . более вероятно, что вы получите ответ, если вы включите некоторые примеры данных в свой вопрос. Спасибо.
2. Также можно было бы более подробно объяснить второй вопрос: Кроме того, если я буду использовать series, как я могу получить доступ к последнему значению вместо этого? ? например. на что
series
вы здесь ссылаетесь?3. @edesz — Спасибо за отзыв, теперь я обновил сообщение, чтобы предоставить образцы данных
4. Теперь я вроде как понимаю, это вроде как выводит веса, которые использовались для каждой строки .. и поскольку я упоминал, что создал 100 из clones..it казалось бы, каждая строка будет иметь свой собственный вес.. это не то, чего я ожидаю, поскольку я хочу иметь значения w1, w2, b для использования в качестве параметра для одного персептрона
5. Хорошо, я помещаю ответ на ваш первый вопрос (предполагая, что вы хотите получить
w1
,w2
b
значения, соответствующие наибольшемуx
значению (x=5000-1)
.
Ответ №1:
Что касается вашего первого вопроса, поскольку вам нужно последнее w1
, w2
b
значение, которое было обучено, я предположу, что это соответствует x=50000-1
. Если это правильно, просто добавьте одну строку в конец цикла
for x in range(50000):
.
.
.
if x==50000-1: costs.append([w1, w2, b])
# Print results
w1_trained, w2_trained, b_trained = costs[0][0], costs[0][1], costs[0][2]
print(w1_trained, w2_trained, b_trained)