- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我使用 Theano 设计了一个神经网络,用于近似数学多重函数。但是我一直无法逼近非线性函数,例如:2x/x+3 等。但是网络在线性函数上表现良好。
我使用 1 个隐藏层和 2 个神经元。我试过增加隐藏层中的神经元。但是,这似乎并不能解决问题。
注意:代码没有任何错误。它也试图最小化成本,但它所做的预测不是预期的(也许它正在学习一些无意义/不需要的模式)。
我使用的(UPDATED-UPDATED)代码是:
x = T.dscalar()
y = T.dscalar()
inputs = np.random.randint(1,6,size=(500))
outputs = (inputs * 2.0) / (inputs + 3.0)
def layer(x, w):
b = np.array([1], dtype=theano.config.floatX)
x = b * x # doing to be able to concatenate b and x
x = T.concatenate([x, b])
return nnet.sigmoid(T.dot(w.T, x))
def grad_desc(cost, theta):
alpha = 0.01
return theta - (alpha * (T.grad(cost, wrt=theta)))
theta1 = theano.shared(np.array(np.random.rand(2,6), dtype=theano.config.floatX))
theta2 = theano.shared(np.array(np.random.rand(7,1), dtype=theano.config.floatX))
h1 = layer(x, theta1)
h2 = layer(h1, theta2)
out = T.nnet.softmax(h2)
fc = T.mean(T.sqr(out - y))
back_prop = theano.function(inputs=[x,y], outputs=[fc], updates=[
(theta1, grad_desc(fc, theta1)),
(theta2, grad_desc(fc, theta2))
])
feed_forward = theano.function(inputs=[x], outputs=[out])
cur_cost = 0
for i in range(100):
for x, y in zip(inputs, outputs):
cur_cost = back_prop(x, y)
if i % 10 == 0:
print "Epoch ", i/10, " : ", cur_cost
与 Epoch 相关的成本:
Epoch 0 : [array(0.0625)]
Epoch 1 : [array(0.0625)]
Epoch 2 : [array(0.0625)]
Epoch 3 : [array(0.0625)]
Epoch 4 : [array(0.0625)]
Epoch 5 : [array(0.0625)]
Epoch 6 : [array(0.0625)]
Epoch 7 : [array(0.0625)]
Epoch 8 : [array(0.0625)]
Epoch 9 : [array(0.0625)]
测试:
test_values = np.random.randint(1,100, size=(1,6))
for i in test_values[0]:
print "Result : ", feed_forward(i), "Actual : ", (2.0*i)/(i+3.0)
测试结果:
Result : [array([[ 1.]])] Actual : 1.90909090909
Result : [array([[ 1.]])] Actual : 1.82857142857
Result : [array([[ 1.]])] Actual : 1.66666666667
Result : [array([[ 1.]])] Actual : 1.93023255814
Result : [array([[ 1.]])] Actual : 1.7
Result : [array([[ 1.]])] Actual : 1.85714285714
感谢任何帮助。
最佳答案
您的代码不是神经网络……至少在有意义的意义上不是——它只是一个线性模型。当您没有任何非线性激活函数时,拥有隐藏层毫无意义,因为您可以建模的一切都只是输入的线性函数。添加非线性,添加它们各自的梯度,然后您将能够对非线性函数进行建模。
关于python - 使用 Theano 逼近 NN 的非线性函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37634110/
在 Vim 中,我打开了一个基本结构如下的文件: 3677137 00:01:47.04 666239 00:12:57.86 4346 00:00:01.77 418 00:00:0
我正在尝试构建一个正则表达式来处理以字符串形式呈现给我的数据类型,有两种可能的格式: 字符串[nmin..nmax] 字符串[nmax] 其中 nmin 和 nmax 是一些数字。 我构建了适合我的正
我尝试按照 tensorflow 教程实现 MNIST CNN 神经网络,并找到这些实现 softmax 交叉熵的方法给出了不同的结果: (1) 不好的结果 softmax = tf.nn.softm
我是 Pytorch 的新手,我不太了解的一件事是 nn.ModuleList 的用法。和 nn.Sequential .我能知道什么时候应该使用一个而不是另一个吗?谢谢。 最佳答案 nn.Modul
我不明白当数据为 3D 时 BatchNorm1d 如何工作(批量大小、H、W)。 示例 输入大小:(2,50,70) 图层:nn.Linear(70,20) 输出大小:(2,50,20) 如果我随后
我浏览了chapter 7 NLTK 书中的内容正在寻找解决方案,但到目前为止我还不清楚。 *表示 0 个或多个名词 *正如书中所解释的,意思是0个或多个任何类型的名词 NLTK 中是 NN , NN
:nn.MaxPool2d(kernel_size, stride) 和 nn.function.max_pool2d(t, kernel_size, stride) 之间有什么区别? 我在模块中定义
我正在使用 Hadoop 2.6.0-cdh5.6.0。我已经配置了 HA。我显示了事件(NN1)和备用名称节点(NN2)。现在,当我向事件名称节点(NN1)发出终止信号时,备用名称节点(NN2)不会
Pytorch 中的许多损失函数都在 nn.modules.loss 和 nn.functional 中实现。 例如,下面的两行返回相同的结果。 import torch.nn as nn impor
我已阅读 docs of both functions ,但据我所知,对于函数 tf.nn.softmax_cross_entropy_with_logits(logits, labels, dim=
当我尝试比较 tf.nn.fused_batch_norm 的方差输出和 tf.nn.moments 的方差输出时,对于相同的输入,我没有相同的值。 import numpy as np import
当我尝试比较 tf.nn.fused_batch_norm 的方差输出和 tf.nn.moments 的方差输出时,对于相同的输入,我没有相同的值。 import numpy as np import
这个问题在这里已经有了答案: Are there any computational efficiency differences between nn.functional() Vs nn.seq
我有一个简单的 Java 客户端,可以将文件保存到 HDFS - 配置了 1 个名称节点。为此,我使用 hadoop 配置,指定默认文件系统,如: org.apache.hadoop.conf.Con
我将此 varchar 格式作为时间累积,我想将其转换为整数以执行 SUM 并获得一组的总时间。第一部分可以是1、2、3、4甚至5位数字,代表小时数的累加,然后用冒号隔开。然后是第二部分,即分钟的累积
在 pytorch 0.4.0 版本中,有一个 nn.LayerNorm模块。 我想在我的 LSTM 网络中实现这一层,尽管我在 LSTM 网络上找不到任何实现示例。 pytorch 贡献者暗示这 n
以下是使用 PyTorch 中的 nn.functional() 模块的前馈网络 import torch.nn as nn import torch.nn.functional as F class
对于住宿实体,我们有两列可以为空:CollectionType和 AccommodationUnitType . 但是我注意到在数据中它们被设置为零而不是空,导致 NHibernate 尝试查找 id
我只需要分块那些只有那种模式的短语,而不是再分块一次。我在 Python 中使用 NLTK 库 完成了它,但不起作用 import nltk import re document="they run
例如,如果我有以下模型类: class MyTestModel(nn.Module): def __init__(self): super(MyTestModel, self)
我是一名优秀的程序员,十分优秀!