gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 09:11:46 25 4
gpt4 key购买 nike

我正在尝试使用 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)

如果有人有任何建议,我将非常感激。

最佳答案

首先,这里有两个问题,一个是您需要将输出调整到 0 到 255 之间。您可以在之后进行一些转换来完成此操作。取最大值和最小值,然后在 0 到 255 之间转置。

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

我建议您的隐藏层使用 SigmoidLayer,这当然会将值压缩在 0 和 1 之间。您可以在输出层中通过乘以 255 来纠正这一点。要么通过固定层,要么只是在之后转换值。

关于python - Pybrain简单前馈网络不输出期望值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34338319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com