“用连接神经元解决深度学习中的内协变量转移”一文的keras实现

linked-neurons的Python项目详细描述


连接神经元

https://img.shields.io/pypi/v/linked_neurons.svghttps://img.shields.io/travis/blauigris/linked_neurons.svgDocumentation StatusUpdates

Keras实现“利用连接神经元解决深度学习中的内部协变量转移”

连接神经元是一个深度学习框架,其中两个或多个激活是耦合的,以便在 所有输入空间。这提高了协变量移位的稳健性,并使之丧失了其他技术,如批处理规范化。 增加了计算成本。更多的信息在这里的ARXIV论文。

功能

  • 比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中,所以 重新编译它会用新的结果更新文件。

学分

这个包是用Cookiecutteraudreyr/cookiecutter-pypackage项目模板创建的。

历史记录

0.1.0(2017-12-01)

  • pypi上的第一个版本。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spinner选定值未上载到firebase数据库   java如何通过bukkit中的配置添加消息?   java在SharedReference中保存列表的泛型类型   javascript Java小程序未定义   swt在Java中构建控制台应用程序   java OAuth同意屏幕没有突然显示,没有错误?   java webview选择文件安卓不工作   java Spring boot JPA如何从同一连接添加多个数据库?   java JDBC DB2驱动程序计时器线程处于阻塞状态   java我在vscode中运行flatter时看到一个错误在phone中运行应用程序somone能否帮助我plz   Java:生成JSON:如何避免生成不完整的JSON   java Date compareTo()方法始终返回1   当使用Junit runner运行测试时,java Spring自动连线失败   java Android/Sockets如何将信息从主UI线程发送到socket线程?   java Android内存声明全局变量   java如何在JBoss中拥有多个具有相同JNDI名称的数据源?   python在Java中嵌入CPython时,为什么会挂起?   java如何提供深度模拟对象?   java“find:smallint,expected:integer”Hibernate对informix数据库的验证在短时间内失败