gpt4 book ai didi

python - Theano/Lasagne/Nolearn 神经网络图像输入

转载 作者:太空狗 更新时间:2023-10-30 00:55:19 24 4
gpt4 key购买 nike

我正在处理图像分类任务,并决定将 Lasagne + Nolearn 用于神经网络原型(prototype)。所有标准示例(如 MNIST 数字分类)都运行良好,但当我尝试使用自己的图像时出现问题。

我想使用 3 channel 图像,而不是灰度图像。还有我试图从图像中获取数组的代码:

 img = Image.open(item)
img = ImageOps.fit(img, (256, 256), Image.ANTIALIAS)
img = np.asarray(img, dtype = 'float64') / 255.
img = img.transpose(2,0,1).reshape(3, 256, 256)
X.append(img)

这里是 NN 及其拟合的代码:

X, y = simple_load("new")

X = np.array(X)
y = np.array(y)


net1 = NeuralNet(
layers=[ # three layers: one hidden layer
('input', layers.InputLayer),
('hidden', layers.DenseLayer),
('output', layers.DenseLayer),
],
# layer parameters:
input_shape=(None, 65536), # 96x96 input pixels per batch
hidden_num_units=100, # number of units in hidden layer
output_nonlinearity=None, # output layer uses identity function
output_num_units=len(y), # 30 target values

# optimization method:
update=nesterov_momentum,
update_learning_rate=0.01,
update_momentum=0.9,

regression=True, # flag to indicate we're dealing with regression problem


max_epochs=400, # we want to train this many epochs
verbose=1,
)

net1.fit(X, y)

我收到这样的异常:

Traceback (most recent call last):
File "las_mnist.py", line 39, in <module>
net1.fit(X[i], y[i])
File "/usr/local/lib/python2.7/dist-packages/nolearn/lasagne.py", line 266, in fit
self.train_loop(X, y)
File "/usr/local/lib/python2.7/dist-packages/nolearn/lasagne.py", line 273, in train_loop
X, y, self.eval_size)
File "/usr/local/lib/python2.7/dist-packages/nolearn/lasagne.py", line 377, in train_test_split
kf = KFold(y.shape[0], round(1. / eval_size))
IndexError: tuple index out of range

那么,您以哪种格式向您的网络“提供”图像数据?感谢您的回答或任何提示!

最佳答案

如果你正在做分类,你需要修改一些东西:

  1. 在您的代码中,您设置了 regression = True。要进行分类,请删除此行。
  2. 如果要输入 3 个不同的 channel ,请确保您的输入形状与 X 的形状匹配
  3. 因为您正在进行分类,所以您需要输出使用 softmax 非线性(目前您拥有的身份不会帮助您进行分类)

    X, y = simple_load("new")

    X = np.array(X)
    y = np.array(y)

    net1 = NeuralNet(
    layers=[ # three layers: one hidden layer
    ('input', layers.InputLayer),
    ('hidden', layers.DenseLayer),
    ('output', layers.DenseLayer),
    ],
    # layer parameters:
    input_shape=(None, 3, 256, 256), # TODO: change this
    hidden_num_units=100, # number of units in hidden layer
    output_nonlinearity=lasagne.nonlinearities.softmax, # TODO: change this
    output_num_units=len(y), # 30 target values

    # optimization method:
    update=nesterov_momentum,
    update_learning_rate=0.01,
    update_momentum=0.9,

    max_epochs=400, # we want to train this many epochs
    verbose=1,

    )

关于python - Theano/Lasagne/Nolearn 神经网络图像输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29707174/

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