mirror of
https://github.com/saymrwulf/pytorch.git
synced 2026-05-15 21:00:47 +00:00
Summary: In some cases we don't want to compute the full FC during eval. These layers allow us to compute dot product between X and W[idx,:] where idx is an input, e.g., label. Reviewed By: kittipatv Differential Revision: D5305364 fbshipit-source-id: 0b6a1b61cc8fcb26c8def8bcd037a4a35d223078
33 lines
1,004 B
Python
33 lines
1,004 B
Python
from __future__ import absolute_import
|
|
from __future__ import division
|
|
from __future__ import print_function
|
|
from __future__ import unicode_literals
|
|
|
|
from importlib import import_module
|
|
import pkgutil
|
|
import sys
|
|
import inspect
|
|
from . import layers
|
|
|
|
|
|
def import_recursive(package, clsmembers):
|
|
"""
|
|
Takes a package and imports all modules underneath it
|
|
"""
|
|
|
|
pkg_dir = package.__path__
|
|
module_location = package.__name__
|
|
for (_module_loader, name, ispkg) in pkgutil.iter_modules(pkg_dir):
|
|
module_name = "{}.{}".format(module_location, name) # Module/package
|
|
module = import_module(module_name)
|
|
clsmembers += [cls[1] for cls in inspect.getmembers(module, inspect.isclass)]
|
|
if ispkg:
|
|
import_recursive(module, clsmembers)
|
|
|
|
|
|
clsmembers = []
|
|
import_recursive(sys.modules[__name__], clsmembers)
|
|
|
|
for cls in clsmembers:
|
|
if issubclass(cls, layers.ModelLayer) and cls is not layers.ModelLayer:
|
|
layers.register_layer(cls.__name__, cls)
|