self-normalizing-networks
Use this skill when working in the Self-Normalizing Networks tutorial repository, especially for TensorFlow, PyTorch, Conda environment, or SELU/AlphaDropout implementation tasks.
来源信息
- 仓库
- bioinf-jku/SNNs
- 最近来源活动
- 2026年5月12日 14:16
- 检测到的 SKILL.md 语言
- 英语
- 星标
- 1,588
- 分支
- 196
安装方式
默认使用会先检查来源的 Prompt;你也可以切换为直接命令,或下载本地副本。
检查来源文件
决定是否安装前,请先阅读 SKILL.md,以及 SkillsMP 当前展示的配套文件。
正在显示 SKILL.md
SKILL.md
来源说明 · 只读预览- name
- self-normalizing-networks
- description
- Use this skill when working in the Self-Normalizing Networks tutorial repository, especially for TensorFlow, PyTorch, Conda environment, or SELU/AlphaDropout implementation tasks.
# Self-Normalizing Networks
This repository contains tutorial implementations for Self-Normalizing Networks
(SNNs) based on Klambauer et al. Preserve the teaching purpose of the examples:
show how SELU networks are constructed and compared across TensorFlow and
PyTorch implementations.
## Minimal Tabular SNN Example
Below is a minimal prototype (see TF_2_x/TABULAR-MLP-SELU.py) for showing SNNs
on tabular data: load a small scikit-learn dataset, standardize the features,
and train a compact Keras MLP with SELU, LeCun initialization, and AlphaDropout.
```python
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler
from tensorflow import keras
from tensorflow.keras import layers
X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.2, random_state=0, stratify=y
)
scaler = StandardScaler()
X_train = scaler.fit_transform(X_train)
X_test = scaler.transform(X_test)
model = keras.Sequential(
[
keras.Input(shape=(X_train.shape[1],)),
layers.Dense(64, activation="selu", kernel_initializer="lecun_normal"),
layers.AlphaDropout(0.05),
layers.Dense(32, activation="selu", kernel_initializer="lecun_normal"),
layers.Dense(1, activation="sigmoid"),
]
)
model.compile(
optimizer=keras.optimizers.Adam(learning_rate=1e-3),
loss="binary_crossentropy",
metrics=["accuracy"],
)
model.fit(X_train, y_train, epochs=20, batch_size=32, validation_split=0.2)
print(model.evaluate(X_test, y_test, verbose=0))
```
## Core SNN Rules
- Pair SELU activations with LeCun normal initialization.
- Use AlphaDropout when dropout is used in SELU networks.
- In PyTorch, use `nn.init.kaiming_normal_(..., mode="fan_in", nonlinearity="linear")`
for SELU layers; this matches LeCun normal initialization.
- Keep comparisons between ReLU/dropout and SELU/AlphaDropout conceptually clear.
- Do not add BatchNorm to SNN examples unless explicitly requested; it changes the
comparison.
## Repository Structure
- `TF_2_x/` contains current TensorFlow/Keras scripts.
- `Pytorch/` contains PyTorch notebooks.
- The root `environment.yml` is the main environment for current TF2 and PyTorch
examples.
在 GitHub 查看