P. *_*eri 5 python theano lasagne nolearn
我正在使用Theano 0.7,nolearn 0.6adev并lasagne 0.2.dev1在GPU(在IPython 3.2.1笔记本电脑中)训练神经网络.但是,由于第一层('reduc'),以下网络没有开始训练,等待几个小时后:
import theano
from lasagne import layers
from lasagne.updates import nesterov_momentum
from nolearn.lasagne import NeuralNet
from nolearn.lasagne import BatchIterator
from lasagne import nonlinearities
from lasagne import init
import numpy as np
testNet = NeuralNet(
layers=[(layers.InputLayer, {"name": 'input', 'shape': (None, 12, 1000, )}),
(layers.Conv1DLayer, {"name": 'reduc', 'filter_size': 1, 'num_filters': 4,
"nonlinearity":nonlinearities.linear,}),
(layers.Conv1DLayer, {"name": 'conv1', 'filter_size': 25, 'num_filters': 100,
'pad': 'same', }),
(layers.MaxPool1DLayer, {'name': 'pool1', 'pool_size': 5, 'stride': 3}),
(layers.Conv1DLayer, {"name": 'conv2', 'filter_size': 15, 'num_filters': 100,
'pad': 'same',
'nonlinearity': nonlinearities.LeakyRectify(0.2)}),
(layers.MaxPool1DLayer, {'name': 'pool2', 'pool_size': 5, 'stride': 2}),
(layers.Conv1DLayer, {"name": 'conv3', 'filter_size': 9, 'num_filters': 100,
'pad': 'same',
'nonlinearity': nonlinearities.LeakyRectify(0.2)}),
(layers.MaxPool1DLayer, {'name': 'pool3', 'pool_size': 2}),
(layers.Conv1DLayer, {"name": 'conv4', 'filter_size': 5, 'num_filters': 20,
'pad': 'same', }),
(layers.Conv1DLayer, {"name": 'conv5', 'filter_size': 3, 'num_filters': 20,
'pad': 'same',}),
(layers.DenseLayer, {"name": 'hidden1', 'num_units': 10,
'nonlinearity': nonlinearities.rectify}),
(layers.DenseLayer, {"name": 'output', 'nonlinearity': nonlinearities.sigmoid,
'num_units': 5})
],
# optimization method:
update=nesterov_momentum,
update_learning_rate=5*10**(-3),
update_momentum=0.9,
regression=True,
max_epochs=1000,
verbose=1,
)
testNet.fit(np.random.random([3000, 12, 1000]).astype(np.float32),
np.random.random([3000, 5]).astype(np.float32))
Run Code Online (Sandbox Code Playgroud)
如果我注释掉第一层,训练将在几秒钟后开始.培训更复杂的网络也不是问题.是什么导致了这个问题?
编辑:奇怪的是,如果我删除conv4和conv5,训练也开始在合理的时间范围内.
编辑2:更奇怪的是,如果我在图层中将过滤器的大小更改为10 reduc,那么培训将在合理的时间内开始.如果之后我停止了单元格的执行,将此值更改为1,然后重新执行单元格,培训就可以了......
| 归档时间: |
|
| 查看次数: |
524 次 |
| 最近记录: |