千层面回归:错误
Regression with lasagne: error
我正在尝试 运行 使用 lasagne/nolearn 进行回归。我无法找到如何执行此操作的文档(一般来说是深度学习的新手)。
从一个简单的网络(一个隐藏层)开始
from lasagne import layers
from lasagne.nonlinearities import softmax
from lasagne.updates import nesterov_momentum
from nolearn.lasagne import NeuralNet
print(np.shape(X)) # (137, 43)
print(np.shape(y)) # (137,)
layers_s = [('input', layers.InputLayer),
('dense0', layers.DenseLayer),
('output', layers.DenseLayer)]
net_s = NeuralNet(layers=layers_s,
input_shape=(None, num_features),
dense0_num_units=43,
output_num_units=1,
output_nonlinearity=None,
regression=True,
update=nesterov_momentum,
update_learning_rate=0.001,
update_momentum=0.9,
eval_size=0.2,
verbose=1,
max_epochs=100)
net_s.fit(X, y)
我收到以下错误:
TypeError Traceback (most recent call last)
<ipython-input-23-23c15ceec104> in <module>()
----> 1 net_s.fit(X, y)
/home/alex/anaconda3/lib/python3.4/site-packages/nolearn/lasagne.py in fit(self, X, y)
148 out, self.loss, self.update,
149 self.X_tensor_type,
--> 150 self.y_tensor_type,
151 )
152 self.train_iter_, self.eval_iter_, self.predict_iter_ = iter_funcs
/home/alex/anaconda3/lib/python3.4/site-packages/nolearn/lasagne.py in _create_iter_funcs(self, output_layer, loss_func, update, input_type, output_type)
298 all_params = get_all_params(output_layer)
299 update_params = self._get_params_for('update')
--> 300 updates = update(loss_train, all_params, **update_params)
301
302 train_iter = theano.function(
/home/alex/src/lasagne/lasagne/updates.py in nesterov_momentum(loss, all_params, learning_rate, momentum)
38 # such that the gradient can be evaluated at the current parameters.
39 def nesterov_momentum(loss, all_params, learning_rate, momentum=0.9):
---> 40 all_grads = theano.grad(loss, all_params)
41 updates = []
42
/home/alex/anaconda3/lib/python3.4/site-packages/theano/gradient.py in grad(cost, wrt, consider_constant, disconnected_inputs, add_names, known_grads, return_disconnected)
431
432 if cost is not None and cost.ndim != 0:
--> 433 raise TypeError("cost must be a scalar.")
434
435 if isinstance(wrt, set):
TypeError: cost must be a scalar.
谢谢!..
不确定您使用的是哪个版本的 nolearn 和 lasagne。我注意到你有 y
的形状 (137,)
。根据我的用法,这需要 (137, 1)
才能适用于您的情况,并且通常 dim 2 需要匹配 output_num_units
。
尝试y.reshape((-1, 1))
。
如果这不起作用,可能是 Python 3 兼容性问题。
确保您使用的是 已知可以协同工作。
的 nolearn 和 Lasagne 版本
假设您一直在关注 Using convolutional neural nets to detect facial keypoints tutorial. Then the right thing to do is to install the dependencies from this requirements.txt file,例如:
pip uninstall Lasagne
pip uninstall nolearn
pip install -r https://raw.githubusercontent.com/dnouri/kfkd-tutorial/master/requirements.txt
但是,如果您使用的是 Git master 的 nolearn,请确保安装 requirements.txt file found there:
中的 Lasagne 版本
pip uninstall Lasagne
pip install -r https://raw.githubusercontent.com/dnouri/nolearn/master/requirements.txt
我正在尝试 运行 使用 lasagne/nolearn 进行回归。我无法找到如何执行此操作的文档(一般来说是深度学习的新手)。
从一个简单的网络(一个隐藏层)开始
from lasagne import layers
from lasagne.nonlinearities import softmax
from lasagne.updates import nesterov_momentum
from nolearn.lasagne import NeuralNet
print(np.shape(X)) # (137, 43)
print(np.shape(y)) # (137,)
layers_s = [('input', layers.InputLayer),
('dense0', layers.DenseLayer),
('output', layers.DenseLayer)]
net_s = NeuralNet(layers=layers_s,
input_shape=(None, num_features),
dense0_num_units=43,
output_num_units=1,
output_nonlinearity=None,
regression=True,
update=nesterov_momentum,
update_learning_rate=0.001,
update_momentum=0.9,
eval_size=0.2,
verbose=1,
max_epochs=100)
net_s.fit(X, y)
我收到以下错误:
TypeError Traceback (most recent call last)
<ipython-input-23-23c15ceec104> in <module>()
----> 1 net_s.fit(X, y)
/home/alex/anaconda3/lib/python3.4/site-packages/nolearn/lasagne.py in fit(self, X, y)
148 out, self.loss, self.update,
149 self.X_tensor_type,
--> 150 self.y_tensor_type,
151 )
152 self.train_iter_, self.eval_iter_, self.predict_iter_ = iter_funcs
/home/alex/anaconda3/lib/python3.4/site-packages/nolearn/lasagne.py in _create_iter_funcs(self, output_layer, loss_func, update, input_type, output_type)
298 all_params = get_all_params(output_layer)
299 update_params = self._get_params_for('update')
--> 300 updates = update(loss_train, all_params, **update_params)
301
302 train_iter = theano.function(
/home/alex/src/lasagne/lasagne/updates.py in nesterov_momentum(loss, all_params, learning_rate, momentum)
38 # such that the gradient can be evaluated at the current parameters.
39 def nesterov_momentum(loss, all_params, learning_rate, momentum=0.9):
---> 40 all_grads = theano.grad(loss, all_params)
41 updates = []
42
/home/alex/anaconda3/lib/python3.4/site-packages/theano/gradient.py in grad(cost, wrt, consider_constant, disconnected_inputs, add_names, known_grads, return_disconnected)
431
432 if cost is not None and cost.ndim != 0:
--> 433 raise TypeError("cost must be a scalar.")
434
435 if isinstance(wrt, set):
TypeError: cost must be a scalar.
谢谢!..
不确定您使用的是哪个版本的 nolearn 和 lasagne。我注意到你有 y
的形状 (137,)
。根据我的用法,这需要 (137, 1)
才能适用于您的情况,并且通常 dim 2 需要匹配 output_num_units
。
尝试y.reshape((-1, 1))
。
如果这不起作用,可能是 Python 3 兼容性问题。
确保您使用的是 已知可以协同工作。
的 nolearn 和 Lasagne 版本假设您一直在关注 Using convolutional neural nets to detect facial keypoints tutorial. Then the right thing to do is to install the dependencies from this requirements.txt file,例如:
pip uninstall Lasagne
pip uninstall nolearn
pip install -r https://raw.githubusercontent.com/dnouri/kfkd-tutorial/master/requirements.txt
但是,如果您使用的是 Git master 的 nolearn,请确保安装 requirements.txt file found there:
中的 Lasagne 版本pip uninstall Lasagne
pip install -r https://raw.githubusercontent.com/dnouri/nolearn/master/requirements.txt