Преобразование данных из int в series

#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)