Pybrain简单前馈网络不输出期望值

2024-10-02 02:44:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试使用pybrain输出rgb值。输入层接受一组rgb值,所有隐藏层都是线性模型。我本以为网络会输出rgb值。但是,这个网络的输出结果是一个值数组,这些值在0:255的范围内不在附近。 这些图片是大约25个不同的.jpg的公牛图片。每个图像是一个长度为575280的扁平数组。我希望网络能集中在一个最终像公牛的图像上。在

import numpy as np
from pybrain.structure import FeedForwardNetwork, LinearLayer, SigmoidLayer, GaussianLayer, TanhLayer
from pybrain.structure import FullConnection, BiasUnit
import testabull

bull_x = 510
bull_y = 398
bull_flat = 575280

n = FeedForwardNetwork()

bias_unit = BiasUnit()
in_layer = LinearLayer(bull_flat)
hidden_A = LinearLayer(5)
hidden_B = LinearLayer(10)
out_layer = LinearLayer(bull_flat)

n.addInputModule(in_layer)
n.addModule(hidden_A)
n.addModule(hidden_B)
n.addOutputModule(out_layer)
n.addModule(bias_unit)

in_to_hidden = FullConnection(in_layer, hidden_A)
hidden_to_hidden = FullConnection(hidden_A, hidden_B)
hidden_to_out = FullConnection(hidden_B, out_layer)
bias_to_hidden = FullConnection(hidden_B, out_layer)

n.addConnection(in_to_hidden)
n.addConnection(hidden_to_hidden)
n.addConnection(bias_to_hidden)
n.addConnection(hidden_to_out)

n.sortModules()


bull_img_array = testabull.crop_the_bull_images('../../imgs/thebull/')

trainable_array = [] ## an array of flattened images
for im in bull_img_array:
    flat_im = np.array(im).flatten()
    trainable_array.append(flat_im)

print n
print n.activate(trainable_array[0])

output = None
for a in trainable_array:
    output = n.activate(a)
print output, len(output) 

如果有人有什么建议,我会非常感谢的。在


Tags: toinimportlayeroutarrayhiddenflat
1条回答
网友
1楼 · 发布于 2024-10-02 02:44:25

首先,这里有两个问题,一个需要在0到255之间调整输出。你可以在以后做一些改变。取最大值和最小值,然后在0和255之间转置。在

另一方面,这个网络很可能不会学习你想要它什么,你的隐藏层使用线性层。这不是很有用,因为权重本身形成了线性变换。你将得到一个线性函数。ftp://ftp.sas.com/pub/neural/FAQ2.html#A_act

我建议对隐藏层使用SigmoidLayer,这当然会压缩0到1之间的值。您可以在输出层中通过乘以255来更正此问题。或者通过一个固定的层或者只是在之后转换值。在

相关问题 更多 >

    热门问题