# Python神经网络示例代码
# 导入必要的库
import numpy as np
# 定义激活函数(Sigmoid)
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 定义Sigmoid函数的导数
def sigmoid_derivative(x):
return x * (1 - x)
# 初始化权重和偏置
input_layer_neurons = 3 # 输入层神经元数量
hidden_layer_neurons = 3 # 隐藏层神经元数量
output_neurons = 1 # 输出层神经元数量
# 权重和偏置初始化
wh = np.random.uniform(size=(input_layer_neurons, hidden_layer_neurons))
bh = np.random.uniform(size=(1, hidden_layer_neurons))
wout = np.random.uniform(size=(hidden_layer_neurons, output_neurons))
bout = np.random.uniform(size=(1, output_neurons))
# 输入数据
X = np.array([[1, 0, 1], [1, 1, 1], [0, 1, 0], [1, 0, 1]])
y = np.array([[1], [1], [0], [1]])
# 超参数
learning_rate = 0.1
epochs = 10000
# 训练神经网络
for i in range(epochs):
# 前向传播
hidden_layer_input1 = np.dot(X, wh)
hidden_layer_input = hidden_layer_input1 + bh
hiddenlayer_activations = sigmoid(hidden_layer_input)
output_layer_input1 = np.dot(hiddenlayer_activations, wout)
output_layer_input = output_layer_input1 + bout
output = sigmoid(output_layer_input)
# 计算误差
E = y - output
# 反向传播
slope_output_layer = sigmoid_derivative(output)
slope_hidden_layer = sigmoid_derivative(hiddenlayer_activations)
d_output = E * slope_output_layer
Error_at_hidden_layer = d_output.dot(wout.T)
d_hiddenlayer = Error_at_hidden_layer * slope_hidden_layer
# 更新权重和偏置
wout += hiddenlayer_activations.T.dot(d_output) * learning_rate
bout += np.sum(d_output, axis=0, keepdims=True) * learning_rate
wh += X.T.dot(d_hiddenlayer) * learning_rate
bh += np.sum(d_hiddenlayer, axis=0, keepdims=True) * learning_rate
# 打印输出结果
print("最终输出值:")
print(output)
numpy 进行矩阵运算。X 和标签 y。这个简单的神经网络可以用来理解基本的前向传播和反向传播过程。
上一篇:python中sum函数的用法
下一篇:python dict 合并
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站