首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >西亚诺/拉萨涅/诺尔温神经网络图像输入

西亚诺/拉萨涅/诺尔温神经网络图像输入
EN

Stack Overflow用户
提问于 2015-04-17 18:47:42
回答 2查看 3.9K关注 0票数 5

我正致力于图像分类任务,并决定使用拉扎涅+诺尔学习作为神经网络的原型。所有标准示例(如MNIST数字分类)都运行良好,但当我尝试处理自己的图像时会出现问题。

我想使用三通道图像,而不是灰度。下面是我试图从图像中获取数组的代码:

代码语言:javascript
复制
 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的代码及其拟合:

代码语言:javascript
复制
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)

我收到了像这样的例外:

代码语言:javascript
复制
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

所以,你用什么格式“给”你的网络提供图像数据?谢谢你的答案或任何提示!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-04-19 12:18:00

我还在千层面用户论坛上问过这个问题,Oliver在代码示例:https://groups.google.com/forum/#!topic/lasagne-users/8ZA7hr2wKfM上帮了我很多忙。

票数 2
EN

Stack Overflow用户

发布于 2015-06-18 18:03:25

如果您正在进行分类,则需要修改以下几项内容:

  1. 在您的代码中设置了regression = True。若要进行分类,请删除这一行。
  2. 如果要输入3个不同的通道,请确保输入形状与X的形状匹配
  3. 因为您正在进行分类,所以需要输出来使用softmax非线性(目前您有身份,这无助于分类) X,y=simple_load(“新”)X= np.array(X) y= np.array(y) net1 = NeuralNet( layers= #三层:一个隐藏层(‘输入’,layers.InputLayer),(‘隐藏’,layers.DenseLayer),(‘输出’,layers.DenseLayer),#层参数:input_shape=(无,3,256,256个),# TODO:更改此hidden_num_units=100,#隐藏层output_nonlinearity=lasagne.nonlinearities.softmax,#TODO中的单元数:改变这个output_num_units=len(y),# 30目标值#优化方法: update=nesterov_momentum,update_learning_rate=0.01,update_momentum=0.9,max_epochs=400,#我们要训练这么多时代的verbose=1, )
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29707174

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档