2016-08-17 3 views
0

Я использую функцию softmax для получения вывода из нейронной сети и получения минимального значения в качестве результата при вычислении ошибки.Numpy Softmax - Значение истинности массива с более чем одним элементом неоднозначно. Используйте a.any() или a.all()

Однако если выход все равно в предположении [0,0,0] выход SoftMax функции [0.33,0.33,0.33]

Так, при выборе минимум от этого, как,

output = softmax(np.dot(hs,HO)) 
tarminout = np.subtract(target,output) 
mine = min(tarminout) 
mine = 0.5 * np.power(mine,2) 
finalError += mine 

это дает следующее сообщение об ошибке, потому что есть более одного равные минимальные значения,

Traceback (most recent call last):
File "ann.py", line 234, in module

learn()
File "ann.py", line 97, in learn

mine = min(tarminout)

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

Как я могу получить это пройти, когда есть больше чем 1 равные минимальные значения, выбрав только один из них?

Благодаря

+0

Очевидно, что вы оставляете что-то. То, что вы описываете, должно работать. Отправьте код, который вы используете, и полную ошибку. –

+0

Я добавил некоторые детали, проблема в том, что существует более одного равных минимальных значений, вот что вызывает это, поэтому значение min не может выбрать одно, потому что их больше одного. – rksh

+0

Нет, это не так. try 'min (np.array ([1,1,1])) Проблема в другом месте. Опять же, почему бы вам не опубликовать полную ошибку. –

ответ

0

Ответ похоронено в приведенных выше комментариях: ваша ошибка, скорее всего, является результатом прохождения многомерного ndarray к стандартному питону мин(), который не понимает их.

Way # 1: вызов np.min вместо мин

Way # 2 (не рекомендуется): расплющить ваш массив, мин (tarminout.ravel())

Way # 1 является предпочтительным, использование операторы numpy на массивах numpy

Смежные вопросы

 Смежные вопросы