MLP激活函数的选择

http://www.cnblogs.com/neopenx/p/4453161.html


ps:供自己后续学习

### 在 Python sklearn MLPClassifier 中调整激活函数的方法 `MLPClassifier` 提供了灵活的接口允许用户更改其内部配置,包括激活函数选择激活函数决定了神经元输出与输入之间的非线性关系,这对于捕捉复杂模式至关重要。 #### 激活函数选项 `MLPClassifier` 支持以下几种常见的激活函数[^2]: - **'identity'**: 不执行任何操作,即 \( f(x) = x \),通常用于回归问题的最后一层。 - **'logistic'**: 对数几率函数 (Logistic Sigmoid Function),定义为 \( f(x) = \frac{1}{1 + e^{-x}} \)[^2]。 - **'tanh'**: 双曲正切函数 (Hyperbolic Tangent Function),定义为 \( f(x) = \text{tanh}(x) \)[^2]。 - **'relu'**: 整流线性单元 (Rectified Linear Unit),定义为 \( f(x) = \max(0, x) \)[^2]。 默认情况下,`MLPClassifier` 使用的是 'relu' 激活函数。 #### 更改激活函数的方式 可以通过在初始化 `MLPClassifier` 实例时传递参数 `activation` 来指定所需的激活函数。例如: ```python from sklearn.neural_network import MLPClassifier # 创建一个带有 tanh 激活函数MLPClassifier 实例 clf_tanh = MLPClassifier(hidden_layer_sizes=(100,), activation='tanh', solver='adam', max_iter=200) # 创建一个带有 logistic 激活函数MLPClassifier 实例 clf_logistic = MLPClassifier(hidden_layer_sizes=(100,), activation='logistic', solver='adam', max_iter=200) # 创建一个带有 relu 激活函数MLPClassifier 实例(也是默认值) clf_relu = MLPClassifier(hidden_layer_sizes=(100,), activation='relu', solver='adam', max_iter=200) ``` 以上代码展示了如何通过修改 `activation` 参数来改变模型中的激活函数。 #### 示例:使用不同的激活函数进行鸢尾花数据集分类 下面的例子演示了如何在不同激活函数下训练和评估模型的效果: ```python from sklearn.datasets import load_iris from sklearn.model_selection import train_test_split from sklearn.neural_network import MLPClassifier from sklearn.metrics import accuracy_score # 加载鸢尾花数据集 data = load_iris() X, y = data.data, data.target # 将数据分为训练集和测试集 X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42) # 定义三种不同的激活函数对应的模型 activations = ['tanh', 'logistic', 'relu'] results = {} for act in activations: clf = MLPClassifier(hidden_layer_sizes=(100,), activation=act, solver='adam', max_iter=500, random_state=42) clf.fit(X_train, y_train) y_pred = clf.predict(X_test) acc = accuracy_score(y_test, y_pred) results[act] = {'accuracy': acc, 'n_layers': clf.n_layers_, 'loss': clf.loss_} # 输出结果 for act, res in results.items(): print(f"Activation function: {act}") print(f"\tAccuracy: {res['accuracy']:.4f}, Layers: {res['n_layers']}, Loss: {res['loss']:.4f}\n") ``` 此脚本比较了三个常见激活函数的表现,并记录了它们各自的准确性、层数以及最终损失值。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值