“用连接神经元解决深度学习中的内协变量转移”一文的keras实现
linked-neurons的Python项目详细描述
连接神经元
Keras实现“利用连接神经元解决深度学习中的内部协变量转移”
连接神经元是一个深度学习框架,其中两个或多个激活是耦合的,以便在 所有输入空间。这提高了协变量移位的稳健性,并使之丧失了其他技术,如批处理规范化。 增加了计算成本。更多的信息在这里的ARXIV论文。
- 自由软件:麻省理工学院许可证
- 文档:https://linked-neurons.readthedocs.io。
功能
- 比BatchNorm快200%。
- 比selu快40%。
- 使用你最喜欢的激活功能,不用担心协变量的变化。
快速启动
使用pip安装:
pip install linked_neurons
导入项目中的链接神经元:
import linked_neurons
里面有一个作为keras layer.layer子类的实现。 目前有LK RELU,LK PRELU,LK-SELU和LK SWISH可用。
使用顺序的示例:
model = Sequential() (x_train, y_train), (x_test, y_test) = load_mnist() model.add(Conv2D(32, kernel_size=(3, 3), activation=None, input_shape=x_train.shape[1:])) model.add(LKReLU()) model.add(Conv2D(64, (3, 3), activation=None)) model.add(LKReLU()) model.add(MaxPooling2D(pool_size=(2, 2))) model.add(Flatten()) model.add(Dense(128, activation=None)) model.add(LKReLU()) model.add(Dense(10, activation='softmax'))
使用函数api的示例:
(x_train, y_train), (x_test, y_test) = load_mnist() img_input = Input(shape=x_train.shape[1:]) x = Conv2D(width, (7, 7), strides=(2, 2), padding='same', name='convfirst')(img_input) x = LKReLU()(x) x = Conv2D(width, (3, 3), padding='same')(x) x = LKReLU()(x) x = Flatten()(x) x = Dense(classes, activation='softmax', name='fc')(x) model = Model(inputs, x)
有关更多示例,请参阅测试或keras文档。
复制结果
再现性在科学中至关重要,因此我们提供复制结果所需的所有代码。
进行实验
为了复制报告中显示的结果以及报告本身,首先下载整个回购协议,以便 用于生成它们的脚本也包括在内:
git clone git@github.com:blauigris/linked_neurons.git
为了便于使用,每个实验都是使用nosetest单独实现的。它们位于测试/测试物品内 要运行它们,请致电:
nosetests test_<experiment>
例如,对于整个深度实验,可以使用:
nosetests test_depth.py
或者如果只需要一次激活:
nosetests test_depth:TestDepth.test_lkrelu
它将在测试/测试文章/摘要和检查点以tensorboard摘要的形式存储结果 在某些情况下,在测试/测试物品/检查点中。
如果有人想使用超参数,则会将它们设置到每个测试的设置方法中。
实验运行速度很快,特别是从共变位移、深度和宽度等方面进行的实验。 所有CNN*和ResNet50使用GTX 1080ti一天。
生成表
一旦运行,脚本 用于创建本文中使用的表的是tests/test_article/test_table。每个测试都生成一个表。 例如,为了生成深度实验表:
nosetests test_table:TestTable.test_depth
这将创建一个.tex文件,其中包含docs/article/tables中的表。这张桌子包含在paper.tex中,所以 重新编译它会用新的结果更新文件。
学分
这个包是用Cookiecutter和audreyr/cookiecutter-pypackage项目模板创建的。
历史记录
0.1.0(2017-12-01)
- pypi上的第一个版本。