correct copyright date

This commit is contained in:
D-X-Y 2020-02-23 10:30:37 +11:00
parent 2165b9c5b1
commit 4e322bb9c7
27 changed files with 190 additions and 67 deletions

View File

@ -1,6 +1,6 @@
MIT License MIT License
Copyright (c) 2018-2020 Xuanyi Dong (GitHub: https://github.com/D-X-Y) Copyright (c) since 2019.01.01, author: Xuanyi Dong (GitHub: https://github.com/D-X-Y)
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@ -71,6 +71,13 @@ print ('Train Info [10-th epoch] : {:}'.format(results[0].get_train(10)))
index = api.query_index_by_arch('|nor_conv_3x3~0|+|nor_conv_3x3~0|avg_pool_3x3~1|+|skip_connect~0|nor_conv_3x3~1|skip_connect~2|') index = api.query_index_by_arch('|nor_conv_3x3~0|+|nor_conv_3x3~0|avg_pool_3x3~1|+|skip_connect~0|nor_conv_3x3~1|skip_connect~2|')
api.show(index) api.show(index)
``` ```
This string `|nor_conv_3x3~0|+|nor_conv_3x3~0|avg_pool_3x3~1|+|skip_connect~0|nor_conv_3x3~1|skip_connect~2|` means:
```
node-0: the input tensor
node-1: conv-3x3( node-0 )
node-2: conv-3x3( node-0 ) + avg-pool-3x3( node-1 )
node-3: skip-connect( node-0 ) + conv-3x3( node-1 ) + skip-connect( node-2 )
```
5. Create the network from api: 5. Create the network from api:
``` ```

View File

@ -1,6 +1,6 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.01 #
################################################## #####################################################
import sys, time, torch, random, argparse import sys, time, torch, random, argparse
from PIL import ImageFile from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True ImageFile.LOAD_TRUNCATED_IMAGES = True

View File

@ -1,8 +1,8 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.08 #
################################################## #####################################################
# python exps/NAS-Bench-201/check.py --base_save_dir # python exps/NAS-Bench-201/check.py --base_save_dir
################################################## #####################################################
import os, sys, time, argparse, collections import os, sys, time, argparse, collections
from shutil import copyfile from shutil import copyfile
import torch import torch

View File

@ -1,3 +1,6 @@
#####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.08 #
#####################################################
import os import os
from setuptools import setup from setuptools import setup
@ -9,7 +12,7 @@ def read(fname='README.md'):
setup( setup(
name = "nas_bench_201", name = "nas_bench_201",
version = "1.0", version = "1.1",
author = "Xuanyi Dong", author = "Xuanyi Dong",
author_email = "dongxuanyi888@gmail.com", author_email = "dongxuanyi888@gmail.com",
description = "API for NAS-Bench-201 (a benchmark for neural architecture search).", description = "API for NAS-Bench-201 (a benchmark for neural architecture search).",

View File

@ -1,6 +1,6 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.08 #
################################################## #####################################################
import os, sys, time, torch import os, sys, time, torch
from procedures import prepare_seed, get_optim_scheduler from procedures import prepare_seed, get_optim_scheduler
from utils import get_model_infos, obtain_accuracy from utils import get_model_infos, obtain_accuracy

View File

@ -1,7 +1,7 @@
############################################################### ###############################################################
# NAS-Bench-201, ICLR 2020 (https://arxiv.org/abs/2001.00326) # # NAS-Bench-201, ICLR 2020 (https://arxiv.org/abs/2001.00326) #
############################################################### ###############################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019-2020 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.08 #
############################################################### ###############################################################
import os, sys, time, torch, random, argparse import os, sys, time, torch, random, argparse
from PIL import ImageFile from PIL import ImageFile

View File

@ -1,6 +1,6 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.08 #
################################################## #####################################################
import os, sys, time, argparse, collections import os, sys, time, argparse, collections
from copy import deepcopy from copy import deepcopy
import torch import torch

View File

@ -1,5 +1,5 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.08 #
######################################################## ########################################################
# python exps/NAS-Bench-201/test-correlation.py --api_path $HOME/.torch/NAS-Bench-201-v1_0-e61699.pth # python exps/NAS-Bench-201/test-correlation.py --api_path $HOME/.torch/NAS-Bench-201-v1_0-e61699.pth
######################################################## ########################################################

View File

@ -1,8 +1,8 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.08 #
################################################## #####################################################
# python exps/NAS-Bench-201/visualize.py --api_path $HOME/.torch/NAS-Bench-201-v1_0-e61699.pth # python exps/NAS-Bench-201/visualize.py --api_path $HOME/.torch/NAS-Bench-201-v1_0-e61699.pth
################################################## #####################################################
import os, sys, time, argparse, collections import os, sys, time, argparse, collections
from tqdm import tqdm from tqdm import tqdm
from collections import OrderedDict from collections import OrderedDict

View File

@ -1,6 +1,6 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.01 #
################################################## #####################################################
import os, sys, time, torch, random, argparse import os, sys, time, torch, random, argparse
from PIL import ImageFile from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True ImageFile.LOAD_TRUNCATED_IMAGES = True

View File

@ -1,6 +1,6 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.01 #
################################################## #####################################################
import sys, time, torch, random, argparse import sys, time, torch, random, argparse
from PIL import ImageFile from PIL import ImageFile
ImageFile.LOAD_TRUNCATED_IMAGES = True ImageFile.LOAD_TRUNCATED_IMAGES = True

View File

@ -1,6 +1,6 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.01 #
################################################## #####################################################
import sys, time, torch, random, argparse import sys, time, torch, random, argparse
from PIL import ImageFile from PIL import ImageFile
from os import path as osp from os import path as osp

View File

@ -1,5 +1,5 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.01 #
####################################################################### #######################################################################
# Network Pruning via Transformable Architecture Search, NeurIPS 2019 # # Network Pruning via Transformable Architecture Search, NeurIPS 2019 #
####################################################################### #######################################################################

View File

@ -1,6 +1,6 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.01 #
################################################## #####################################################
import time, sys import time, sys
import numpy as np import numpy as np

View File

@ -1,6 +1,6 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.01 #
################################################## #####################################################
import torch import torch
import torch.nn as nn import torch.nn as nn

View File

@ -1,4 +1,4 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.01 #
################################################## #####################################################
from .tiny_network import TinyNetwork from .tiny_network import TinyNetwork

View File

@ -1,6 +1,6 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2020 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.01 #
################################################## #####################################################
import torch.nn as nn import torch.nn as nn
from copy import deepcopy from copy import deepcopy

View File

@ -1,6 +1,6 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2020 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.01 #
################################################## #####################################################
import torch import torch
import torch.nn as nn import torch.nn as nn
from ..cell_operations import ResNetBasicblock from ..cell_operations import ResNetBasicblock

View File

@ -1,5 +1,5 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.01 #
###################################################################################### ######################################################################################
# One-Shot Neural Architecture Search via Self-Evaluated Template Network, ICCV 2019 # # One-Shot Neural Architecture Search via Self-Evaluated Template Network, ICCV 2019 #
###################################################################################### ######################################################################################

View File

@ -0,0 +1,113 @@
#####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.01 #
######################################################################################
# One-Shot Neural Architecture Search via Self-Evaluated Template Network, ICCV 2019 #
######################################################################################
import torch
import torch.nn as nn
from copy import deepcopy
from .search_cells import NASNetSearchCell as SearchCell
from .genotypes import Structure
# The macro structure is based on NASNet
class NASNetworkSETN(nn.Module):
def __init__(self, C, N, steps, multiplier, stem_multiplier, num_classes, search_space, affine, track_running_stats):
super(NASNetworkSETN, self).__init__()
self._C = C
self._layerN = N
self._steps = steps
self._multiplier = multiplier
self.stem = nn.Sequential(
nn.Conv2d(3, C*stem_multiplier, kernel_size=3, padding=1, bias=False),
nn.BatchNorm2d(C*stem_multiplier))
# config for each layer
layer_channels = [C ] * N + [C*2 ] + [C*2 ] * (N-1) + [C*4 ] + [C*4 ] * (N-1)
layer_reductions = [False] * N + [True] + [False] * (N-1) + [True] + [False] * (N-1)
num_edge, edge2index = None, None
C_prev_prev, C_prev, C_curr, reduction_prev = C*stem_multiplier, C*stem_multiplier, C, False
self.cells = nn.ModuleList()
for index, (C_curr, reduction) in enumerate(zip(layer_channels, layer_reductions)):
cell = SearchCell(search_space, steps, multiplier, C_prev_prev, C_prev, C_curr, reduction, reduction_prev, affine, track_running_stats)
if num_edge is None: num_edge, edge2index = cell.num_edges, cell.edge2index
else: assert num_edge == cell.num_edges and edge2index == cell.edge2index, 'invalid {:} vs. {:}.'.format(num_edge, cell.num_edges)
self.cells.append( cell )
C_prev_prev, C_prev, reduction_prev = C_prev, multiplier*C_curr, reduction
self.op_names = deepcopy( search_space )
self._Layer = len(self.cells)
self.edge2index = edge2index
self.lastact = nn.Sequential(nn.BatchNorm2d(C_prev), nn.ReLU(inplace=True))
self.global_pooling = nn.AdaptiveAvgPool2d(1)
self.classifier = nn.Linear(C_prev, num_classes)
self.arch_normal_parameters = nn.Parameter( 1e-3*torch.randn(num_edge, len(search_space)) )
self.arch_reduce_parameters = nn.Parameter( 1e-3*torch.randn(num_edge, len(search_space)) )
def get_weights(self):
xlist = list( self.stem.parameters() ) + list( self.cells.parameters() )
xlist+= list( self.lastact.parameters() ) + list( self.global_pooling.parameters() )
xlist+= list( self.classifier.parameters() )
return xlist
def get_alphas(self):
return [self.arch_normal_parameters, self.arch_reduce_parameters]
def show_alphas(self):
with torch.no_grad():
A = 'arch-normal-parameters :\n{:}'.format( nn.functional.softmax(self.arch_normal_parameters, dim=-1).cpu() )
B = 'arch-reduce-parameters :\n{:}'.format( nn.functional.softmax(self.arch_reduce_parameters, dim=-1).cpu() )
return '{:}\n{:}'.format(A, B)
def get_message(self):
string = self.extra_repr()
for i, cell in enumerate(self.cells):
string += '\n {:02d}/{:02d} :: {:}'.format(i, len(self.cells), cell.extra_repr())
return string
def extra_repr(self):
return ('{name}(C={_C}, N={_layerN}, steps={_steps}, multiplier={_multiplier}, L={_Layer})'.format(name=self.__class__.__name__, **self.__dict__))
def genotype(self):
def _parse(weights):
gene = []
for i in range(self._steps):
edges = []
for j in range(2+i):
node_str = '{:}<-{:}'.format(i, j)
ws = weights[ self.edge2index[node_str] ]
for k, op_name in enumerate(self.op_names):
if op_name == 'none': continue
edges.append( (op_name, j, ws[k]) )
edges = sorted(edges, key=lambda x: -x[-1])
selected_edges = edges[:2]
gene.append( tuple(selected_edges) )
return gene
with torch.no_grad():
gene_normal = _parse(torch.softmax(self.arch_normal_parameters, dim=-1).cpu().numpy())
gene_reduce = _parse(torch.softmax(self.arch_reduce_parameters, dim=-1).cpu().numpy())
return {'normal': gene_normal, 'normal_concat': list(range(2+self._steps-self._multiplier, self._steps+2)),
'reduce': gene_reduce, 'reduce_concat': list(range(2+self._steps-self._multiplier, self._steps+2))}
def forward(self, inputs):
normal_hardwts = nn.functional.softmax(self.arch_normal_parameters, dim=-1)
reduce_hardwts = nn.functional.softmax(self.arch_reduce_parameters, dim=-1)
with torch.no_grad():
normal_hardwts_cpu = normal_hardwts.detach().cpu()
reduce_hardwts_cpu = reduce_hardwts.detach().cpu()
s0 = s1 = self.stem(inputs)
for i, cell in enumerate(self.cells):
# [TODO]
raise NotImplementedError
if cell.reduction: hardwts, index = reduce_hardwts, reduce_index
else : hardwts, index = normal_hardwts, normal_index
s0, s1 = s1, cell.forward_gdas(s0, s1, hardwts, index)
out = self.lastact(s1)
out = self.global_pooling( out )
out = out.view(out.size(0), -1)
logits = self.classifier(out)
return out, logits

View File

@ -1,6 +1,6 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.08 #
################################################## #####################################################
from .api import NASBench201API from .api import NASBench201API
from .api import ArchResults, ResultsCount from .api import ArchResults, ResultsCount

View File

@ -1,5 +1,5 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.08 #
############################################################################################ ############################################################################################
# NAS-Bench-201: Extending the Scope of Reproducible Neural Architecture Search, ICLR 2020 # # NAS-Bench-201: Extending the Scope of Reproducible Neural Architecture Search, ICLR 2020 #
############################################################################################ ############################################################################################

View File

@ -1,6 +1,6 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2020 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.01 #
################################################## #####################################################
# I write this package to make AutoDL-Projects to be compatible with the old GDAS projects. # I write this package to make AutoDL-Projects to be compatible with the old GDAS projects.
# Ideally, this package will be merged into lib/models/cell_infers in future. # Ideally, this package will be merged into lib/models/cell_infers in future.
# Currently, this package is used to reproduce the results in GDAS (Searching for A Robust Neural Architecture in Four GPU Hours, CVPR 2019). # Currently, this package is used to reproduce the results in GDAS (Searching for A Robust Neural Architecture in Four GPU Hours, CVPR 2019).

View File

@ -1,6 +1,6 @@
################################################## ##############################################################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019 # # This code is copied and modified from Hanxiao Liu's work (https://github.com/quark0/darts) #
################################################## ##############################################################################################
import torch import torch
import torch.nn as nn import torch.nn as nn

View File

@ -1,6 +1,6 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.01 #
################################################## #####################################################
import math, torch import math, torch
import torch.nn as nn import torch.nn as nn
from bisect import bisect_right from bisect import bisect_right

View File

@ -1,6 +1,6 @@
################################################## #####################################################
# Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019 # # Copyright (c) Xuanyi Dong [GitHub D-X-Y], 2019.01 #
################################################## #####################################################
import os, sys, time, torch import os, sys, time, torch
import torch.nn.functional as F import torch.nn.functional as F
# our modules # our modules