神经网络python代码
以下是一个基本的神经网络Python代码示例:
import numpy as np
# 定义sigmoid函数
def sigmoid(x):
return 1 / (1 + np.exp(-x))
# 定义神经网络类
class NeuralNetwork:
def __init__(self, input_nodes, hidden_nodes, output_nodes, learning_rate):
self.input_nodes = input_nodes
self.hidden_nodes = hidden_nodes
self.output_nodes = output_nodes
self.learning_rate = learning_rate
# 初始化权重
self.weights_input_hidden = np.random.normal(0.0, self.input_nodes**-0.5, (self.input_nodes, self.hidden_nodes))
self.weights_hidden_output = np.random.normal(0.0, self.hidden_nodes**-0.5, (self.hidden_nodes, self.output_nodes))
# 训练函数
def train(self, inputs, targets):
# 前向传播
hidden_inputs = np.dot(inputs, self.weights_input_hidden)
hidden_outputs = sigmoid(hidden_inputs)
final_inputs = np.dot(hidden_outputs, self.weights_hidden_output)
final_outputs = sigmoid(final_inputs)
# 后向传播
output_errors = targets - final_outputs
hidden_errors = np.dot(output_errors, self.weights_hidden_output.T) * hidden_outputs * (1 - hidden_outputs)
# 更新权重
self.weights_hidden_output += self.learning_rate * np.dot(hidden_outputs.T, output_errors)
self.weights_input_hidden += self.learning_rate * np.dot(inputs.T, hidden_errors)
# 预测函数
def predict(self, inputs):
# 前向传播
hidden_inputs = np.dot(inputs, self.weights_input_hidden)
hidden_outputs = sigmoid(hidden_inputs)
final_inputs = np.dot(hidden_outputs, self.weights_hidden_output)
final_outputs = sigmoid(final_inputs)
return final_outputs
这个神经网络类包含一个构造函数,一个训练函数和一个预测函数。构造函数初始化神经网络的参数和权重。训练函数使用输入和目标数据训练神经网络,并通过前向传播和后向传播更新权重。预测函数使用输入数据运行前向传播并返回输出
原文地址: https://www.cveoy.top/t/topic/e8kt 著作权归作者所有。请勿转载和采集!