首页 > 解决方案 > 如何执行二维神经网络?

问题描述

我是神经网络的新手。我看到这段代码解释得很好:

import numpy as np

# sigmoid function
def nonlin(x,deriv=False):
    if(deriv==True):
        return x*(1-x)
    return 1/(1+np.exp(-x))

# input dataset
X = np.array([  [0,0,1],
                [0,1,1],
                [1,0,1],
                [1,1,1] ])

# output dataset
y = np.array([[0,0,1,1]]).T

np.random.seed(1)

# initialize weights randomly with mean 0
syn0 = 2*np.random.random((3,1)) - 1

    # forward propagation
for iter in range(10000):
    for i in range(3):
        l0 = X[i,:]
        l1 = nonlin(np.dot(l0,syn0))
        l1_error = y[i] - l1
    # multiply how much we missed by the slope of the sigmoid at the values in l1
        l1_delta = l1_error * nonlin(l1,True)
    # update weights
        syn0 += np.matrix(l0.T*l1_delta).T



l0 = [0,0,0]
l0 = [1,0,0]
l1 = nonlin(np.dot(l0,syn0))
print(l1)

我能理解这背后的想法。但是,我不知道如何将类似算法应用于二维输出。IE

X = np.array([  [1,1,1],
                [1,0,1],
                [0,1,1],
                [0,0,1],
                [0,0,0],
                [1,1,0]])

y = np.array([  [1,1],
                [1,1],
                [1,0],
                [0,0],
                [0,0],
                [1,1]])

您能否帮我调整第一个算法以与二维输出案例兼容?

编辑

我知道我应该更改syn0 = 2*np.random.random((3,1)) - 1syn0 = 2*np.random.random((3,2)) - 1. 但这不是唯一应该做的改变。我得到错误消息:ValueError: operands could not be broadcast together with shapes (3,) (2,)当试图运行它时,这只是改变了。

标签: pythonnumpyneural-network

解决方案


推荐阅读