2017-02-13 4 views
2

У меня есть этот кодPython - слишком много значений для распаковки

N, D = x.shape 
running_mean = bn_param.get('running_mean', np.zeros(D, dtype=x.dtype)) 
running_var = bn_param.get('running_var', np.zeros(D, dtype=x.dtype)) 

и сказал: ValueError: слишком много значений для распаковки

Я знаю, что х имеет 50x3x32x32 размерности И я хочу поставить 50 в переменной N, и мне нужно поместить 3x32x32 в D-переменную. Как я мог это сделать? Спасибо.

ответ

4

x.shape имеет более чем 2 значения, не сопрягает с числом переменных распаковывать (множественное присваивание):

>>> shape = (50, 3, 32, 32) 
>>> N, D = shape 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
ValueError: too many values to unpack 

Вы можете использовать индекс, операторы ломтика, чтобы получить то, что вы хотите:

>>> shape = (50, 3, 32, 32) 
>>> N, D = shape[0], shape[1:] # [0] to get 1st, [1:] to get 2nd, 3rd,.. up to end 
>>> N 
50 
>>> D 
(3, 32, 32) 

Если вы используете Python 3.x, вы можете использовать Extended iterable unpacking syntax:

>>> N, *D = shape 
>>> N 
50 
>>> D 
[3, 32, 32] 
Смежные вопросы