''' Netdissect package. To run dissection: 1. Load up the convolutional model you wish to dissect, and wrap it in an InstrumentedModel. Call imodel.retain_layers([layernames,..]) to analyze a specified set of layers. 2. Load the segmentation dataset using the BrodenDataset class; use the transform_image argument to normalize images to be suitable for the model, or the size argument to truncate the dataset. 3. Write a function to recover the original image (with RGB scaled to [0...1]) given a normalized dataset image; ReverseNormalize in this package inverts transforms.Normalize for this purpose. 4. Choose a directory in which to write the output, and call dissect(outdir, model, dataset). Example: from netdissect import InstrumentedModel, dissect from netdissect import BrodenDataset, ReverseNormalize model = InstrumentedModel(load_my_model()) model.eval() model.cuda() model.retain_layers(['conv1', 'conv2', 'conv3', 'conv4', 'conv5']) bds = BrodenDataset('datasets/broden1_227', transform_image=transforms.Compose([ transforms.ToTensor(), transforms.Normalize(IMAGE_MEAN, IMAGE_STDEV)]), size=1000) dissect('result/dissect', model, bds, recover_image=ReverseNormalize(IMAGE_MEAN, IMAGE_STDEV), examples_per_unit=10) ''' __all__ = [ 'actviz', 'autoeval', 'bargraph', 'broden', 'customnet', 'easydict', 'encoder_loss', 'encoder_net', 'evalablate', 'frechet_distance', 'fsd', 'fullablate', 'imgsave', 'imgviz', 'invert', 'LBFGS', 'make_z_dataset', 'modelconfig', 'multilayer_graph', 'nethook', 'oldalexnet', 'oldresnet152', 'oldvgg16', 'optimize_residuals', 'optimize_z_lbfgs', 'parallelfolder', 'pbar', 'pidfile', 'plotutil', 'proggan', 'renormalize', 'runningstats', 'samplegan', 'sampler', 'segdata', 'segmenter', 'segviz', 'setting', 'show', 'statedict', 'tally', 'upsample', 'workerpool', 'zdataset', ]