Как прокомментировал @khelwood при импорте модулей с использованием import network3
, вам необходимо предоставить пространство имен для доступа к функциям и классам, определенным внутри network3
:
network3.ReLu
network3.linear
network3.ConvPoolLayer
Чтобы можно было просто использовать ReLu
, linear
и ConvPoolLayer
вы можете изменить строку импорта на одну из следующих:
from network3 import *
или
from network3 import ReLu, linear, ConvPoolLayer
Если вы используете реализацию Sun, это Из Javadocs : O (log (n))
.
Примечание о реализации: эта реализация обеспечивает O (log (n)) время для методов enqueing и dequeing (
предлагают
,опрос
,remove ()
иadd
); Линейное время дляудаления (Объект)
исодержит (Объект)
методы; и постоянное время для методов поиска (peek
,element
иsize
).
Другие реализации могут иметь различную сложность.
Редактировать: Javadocs не покрыть производительность удаления элемента с помощью итератора, поэтому мне пришлось искать исходный код. Все это относится к реализации Sun и может отличаться версией Apple, GNU Classpath и т. Д. Источник Sun доступен здесь здесь ; он также включен в JDK, так что вы, возможно, уже установили его.
В итераторе PriorityQueue
случай по умолчанию для remove ()
заключается в вызове PriorityQueue.removeAt (lastRet)
, где lastRet
- это индекс, который последний раз был возвращен функцией next ()
. removeAt ()
представляется O (log (n))
наихудшим случаем (возможно, придется просеять очередь, но не нужно повторять).
Однако, иногда случаются плохие вещи. Из комментариев removeAt ()
:
/**
* Removes the ith element from queue.
*
* Normally this method leaves the elements at up to i-1,
* inclusive, untouched. Under these circumstances, it returns
* null. Occasionally, in order to maintain the heap invariant,
* it must swap a later element of the list with one earlier than
* i. Under these circumstances, this method returns the element
* that was previously at the end of the list and is now at some
* position before i. This fact is used by iterator.remove so as to
* avoid missing traversing elements.
*/
Когда ненулевой элемент возвращается removeAt ()
, итератор добавляет его в специальную очередь для последующего использования: когда В итераторе заканчиваются элементы в очереди, затем он перебирает эту специальную очередь. Когда remove ()
вызывается во время этой второй фазы итерации, итератор вызывает PriorityQueue.removeEq (lastRetElt)
, где lastRetElt
- последний элемент, возвращенный из особая очередь removeEq
вынужден использовать линейный поиск, чтобы найти правильный элемент для удаления, что делает его O (n)
.