python - 如何执行二维神经网络?
问题描述
我是神经网络的新手。我看到这段代码解释得很好:
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)) - 1
为syn0 = 2*np.random.random((3,2)) - 1
. 但这不是唯一应该做的改变。我得到错误消息:ValueError: operands could not be broadcast together with shapes (3,) (2,)
当试图运行它时,这只是改变了。
解决方案
推荐阅读
- javascript - Cypress-如何跳过关于从未找到的代码错误
- javascript - 如何创建从 webView 调用函数的自定义按钮
- uwp - 在 UWP 和 WASM 上显示视频
- .net - 为 For Each 循环中的 Nothing 异常编码
- javascript - 在 Span 标签中居中文本未按要求工作
- python-3.x - 在 paho_mqtt 中启动 loop_forever() 后,我可以订阅主题吗?
- angular - Angular Typescript 对象属性显然不是未定义的,但属性是
- jquery - 在 Datatables js 中初始化 Select2
- .htaccess - .htaccess 重写规则到外部域 - 客户端 IP 和 HTTP 引用
- ruby-on-rails - RSpec、Rails 6 和设计