Решение уравнения с циклами for python - PullRequest
0 голосов
/ 18 июня 2020

У меня есть такие массивы:

x = np.array([-1,-1,-1,1,-1,-1])

weight = np.array([[0.5,-0.5,0.5,-0.5,0.5,-0.5],
                   [-0.5,0.5,-0.5,0.5,-0.5,0.5],
                   [0.5,0.5,0.5,0.5,0.5,0.5]]) 
print(weight.shape)

bias=np.array([2, 2, 2])
print(bias)
weight = np.transpose(weight)
weight

Вы можете запустить приведенный выше код, который приводит к смещению массивов и weight_ham и x:

bias = [2 2 2]

weight = array([[ 0.5, -0.5,  0.5],
                [-0.5,  0.5,  0.5],
                [ 0.5, -0.5,  0.5],
                [-0.5,  0.5,  0.5],
                [ 0.5, -0.5,  0.5],
                [-0.5,  0.5,  0.5]])
x = array([-1, -1, -1,  1, -1, -1])

Теперь я хочу вычислить это уравнение :

enter image description here

массив y_in должен быть таким:

y_in = np.zeros((1, len(bias)))

Я не понимаю, как я могу вычислить это уравнение с for l oop, так как я не очень хорошо знаком с тем, как писать для циклов. если вы не поняли уравнение, вы можете увидеть этот пример ниже:

enter image description here

Ответы [ 2 ]

1 голос
/ 18 июня 2020

Я не понимаю, почему вам необходимо использовать циклы, когда вы уже работаете с numpy, но правильный способ:

>>> np.add(bias, np.dot(x[None, :], weight)).flatten()
array([1., 3., 0.])

Но если вам нужны циклы:

y = []
for index_1, b in enumerate(bias):
    sum_ = b
    for index_2, val in enumerate(x):
        sum_ += x[index_2] * weight[index_2, index_1]
    y.append(sum_)

>>> y
[1.0, 3.0, 0.0]

# OR

>>> [b + sum(x_val * w for x_val, w in zip(x, weight[:,i])) for i, b in enumerate(bias)]
[1.0, 3.0, 0.0]
1 голос
/ 18 июня 2020

Отправка ответа на проблему со скриншотом. Вы можете использовать тот же код для своей исходной проблемы:

x = np.array([1,1,-1,-1])

weight = np.array([[0.5,-0.5,-0.5,-0.5],
                   [-0.5,-0.5,-0.5,0.5],
                   ]) 

bias=np.array([2, 2])
weight = np.transpose(weight)

Один лайнер:

np.add(bias, np.dot(weight.T, x))

Использование L oop:

y_arr = []
for j in range(weight.shape[1]):
    y = (bias[j] + np.dot(weight[:,j].T, x))
    y_arr.append(y)
y_arr = np.array(y_arr)

y_arr:

array([3., 1.])
...