python实现激活函数

  • Post category:Python

Python可以使用多种方式实现常用的神经网络激活函数,下面将为你详细讲解具体步骤和代码示例。

首先需要导入Python的数值计算库NumPy,因为神经网络的计算过程中需要大量用到数值计算。

import numpy as np

然后我们可以以ReLU激活函数为例,来讲解Python实现激活函数的完整攻略。

ReLU激活函数

ReLU(Rectified Linear Unit)是一种常用的神经网络激活函数,其公式为:

f(x) = max(0, x)

其实现代码如下:

import numpy as np

def relu(x):
    """
    ReLU激活函数
    """
    return np.maximum(0, x)

上面代码中,使用了Numpy库的maximum函数,它可以将输入的两个数组做逐元素比较,返回每个位置上的最大值。

接下来,我们可以使用ReLU激活函数来搭建一个简单的神经网络,并训练它来分类手写数字数据集MNIST。

import numpy as np
from keras.datasets import mnist
from keras.models import Sequential
from keras.layers import Dense, Dropout
from keras.optimizers import RMSprop

# 加载MNIST数据集
(x_train, y_train), (x_test, y_test) = mnist.load_data()

# 数据预处理
x_train = x_train.reshape(60000, 784)
x_test = x_test.reshape(10000, 784)
x_train = x_train.astype('float32') / 255
x_test = x_test.astype('float32') / 255
y_train = keras.utils.to_categorical(y_train, 10)
y_test = keras.utils.to_categorical(y_test, 10)

# 搭建神经网络
model = Sequential()
model.add(Dense(512, activation=relu, input_shape=(784,)))
model.add(Dropout(0.2))
model.add(Dense(512, activation=relu))
model.add(Dropout(0.2))
model.add(Dense(10, activation='softmax'))

# 编译模型
model.compile(loss='categorical_crossentropy',
              optimizer=RMSprop(),
              metrics=['accuracy'])

# 训练模型
batch_size = 128
epochs = 20
history = model.fit(x_train, y_train,
                    batch_size=batch_size,
                    epochs=epochs,
                    verbose=1,
                    validation_data=(x_test, y_test))

上面代码中,我们使用了Keras这个高级深度学习框架来搭建神经网络,可以看到使用ReLU激活函数只需要把它赋值给Dense层的activation参数即可。

最后通过编译模型,指定优化器、损失函数和性能评估指标等参数,并通过训练集来训练模型,最终输出在测试集上的准确率。

总结

以上就是Python实现激活函数的完整攻略,通过示例代码我们可以发现,使用Python实现神经网络非常简单,只需要使用一个数值计算库和一个深度学习框架即可,非常适合初学者入门。