Training from scratch is the most common way to build a Convolutional Neural Network (CNN) based model. What if we can build new CNN models by reusing parts from previously build CNN models? What if we can improve a CNN model by replacing (possibly faulty) parts with other parts? In both cases, instead of training, can we identify the part responsible for each output class (module) in the model(s) and reuse or replace only the desired output classes to build a model? Prior work has proposed decomposing dense-based networks into modules (one for each output class) to enable reusability and replaceability in various scenarios. However, this work is limited to the dense layers and based on the one-to-one relationship between the nodes in consecutive layers. Due to the shared architecture in the CNN model, prior work cannot be adapted directly. In this paper, we propose to decompose a CNN model used for image classification problems into modules for each output class. These modules can further be reused or replaced to build a new model. We have evaluated our approach with CIFAR-10, CIFAR-100, and ImageNet tiny datasets with three variations of ResNet models and found that enabling decomposition comes with a small cost (1.77% and 0.85% for top-1 and top-5 accuracy, respectively). Also, building a model by reusing or replacing modules can be done with a 2.3% and 0.5% average loss of accuracy. Furthermore, reusing and replacing these modules reduces CO2e emission by ~37 times compared to training the model from scratch.
翻译:从零到零的培训是建立以进化神经网络(CNN)为基础的模型的最常见方式。如果我们能够通过重用先前创建CNN模型的部件来建立新的CNN模型,从而建立新的CNN模型,从以前创建的CNN模型中重新使用部件;如果我们能够通过将(可能错误的)部件替换为其他部件来改进CNN模型呢?在这两种情况下,我们能否确定模型中每个产出类(模块)的负责部分以及再利用或仅替换想要的输出类,以建立一个模型?以前的工作已经提议将密密基网络分解成模块(每个产出类一个),以便在各种假设中实现可重复和可替换性。然而,这项工作仅限于密集层,并以连续层节点之间的一对一关系为基础来改进CNN模型?由于CNN模型的共同结构,先前的工作无法直接调整。在本文中,我们提议将用于图像分类问题的CNN模型转换成每个产出类的模块。这些模块可以进一步被再利用或替换为新模型。我们用CIFAR-10、CIFAR-100和图像网络的精确度来评估我们的方法,并且分别以密集层层层层层层层层层的层的层的层次的层的层次的层次的层次和图像网络的精确关系为基础进行对比。此外的模型和最小的模型的模型和最小的模型的模型,也可以进行第层的缩成三版的缩缩缩成。