简单的一个numpy神经网络示例:
import numpy as np
class NeuralNetwork():
def __init__(self):
#将权重转换为3×1矩阵,其值从-1到1,平均值为0
self.synaptic_weights = 2 * np.random.random((3, 1)) - 1
def sigmoid(self, x):
# 定义 sigmoid 函数
return 1 / (1 + np.exp(-x))
def sigmoid_derivative(self, x):
# 计算Sigmoid函数的导数(用于反向传播)
return x * (1 - x)
# 训练
def train(self, training_inputs, training_outputs, training_iterations):
# 训练模型在不断调整权重的同时进行准确预测
for iteration in range(training_iterations):
# 训练数据通过每一层网络节点
output = self.think(training_inputs)
#反向传播误差率的计算
error = training_outputs - output
# performing weight adjustments
# 进行权重调整
adjustments = np.dot(training_inputs.T, error * self.sigmoid_derivative(output))
self.synaptic_weights += adjustments
def think(self, inputs):
# 通过神经元传递输入以获得输出
# 将值转换为浮点数
inputs = inputs.astype(float)
output = self.sigmoid(np.dot(inputs, self.synaptic_weights))
return output
if __name__ == \"__main__\":
# 初始化神经元类
neural_network = NeuralNetwork()
print(\"初始化权重: \")
print(neural_network.synaptic_weights)
# 4组训练数据--3输入1输出
training_inputs = np.array([[0, 0, 1],
[1, 1, 1],
[1, 0, 1],
[0, 1, 1]])
training_outputs = np.array([[0, 1, 1, 0]]).T
# 训练
neural_network.train(training_inputs, training_outputs, 20000)
print(\"训练之后的权重: \")
print(neural_network.synaptic_weights)
user_input_one = str(input(\"输入第一个数据: \"))
user_input_two = str(input(\"输入第二个数据: \"))
user_input_three = str(input(\"输入第三个数据: \"))
print(\"输入数据转换\", user_input_one, user_input_two, user_input_three)
print(\"模型输出: \")
print(neural_network.think(np.array([user_input_one, user_input_two, user_input_three])))
继续阅读与本文标签相同的文章
上一篇 :
专注芯片产业孵化,坪山“硬蛋创新空间”正式开馆
下一篇 :
Vuejs基本知识(四)【页面渲染过程 】
-
flex布局和grid布局
2026-05-18栏目: 教程
-
语音顶会Interspeech 论文解读|Constrained output embeddings for end-to-end code-switching speech recognition with only monolingual data
2026-05-18栏目: 教程
-
《Android应用开发进阶》| 每日读本书
2026-05-18栏目: 教程
-
“阿里云十年,因为有我而不同”,征文活动开始了!
2026-05-18栏目: 教程
-
玩转 Drone CI
2026-05-18栏目: 教程
