# coding:utf-8
import numpy as np
class NueraLNet(object):
def __init__(self, sizes):
self.num_layers = len(sizes)
self.sizes = sizes
self.bias = [np.random.randn(1, y) for y in sizes[1:]]
self.weights = [np.random.randn(x, y) for x, y in zip(sizes[:-1], sizes[1:])]
def get_result(self, images):
result = images
for b, w in zip(self.bias, self.weights):
result = sigmoid(np.dot(result, w) + b)
return result
def train_net(self, trainimage, trainresult, traintime, rate=1, minibatch=10, test_image=None, test_result=None):
for i in range(traintime):
minibatchimage = [trainimage[k:k+minibatch] for k in range(0, len(trainimage), minibatch)]
minibatchresult = [trainresult[k:k+minibatch] for k in range(0, len(trainimage), minibatch)]
for image, result in zip(minibatchimage, minibatchresult):
self.update_net(image, result, rate)
print("第{0}次学习结束".format(i+1))
if test_image and test_result:
self.test_net(test_image, test_result)
def update_net(self, training_image, training_result, rate):
batch_b_error = [np.zeros(b.shape) for b in self.bias]
batch_w_error = [np.zeros(w.shape) for w in self.weights]
for image, result in zip(training_image, training_result):
b_error, w_error = self.get_error(image, result)
batch_b_error = [bbe + be for bbe, be in zip(batch_b_error, b_error)]
batch_w_error = [bwe + we for bwe, we in zip(batch_w_error, w_error)]
self.bias = [b - (rate/len(training_image))*bbe for b, bbe in zip(self.bias, batch_b_error)]
self.weights = [w - (rate/len(training_image))*bwe for w, bwe in zip(self.weights, batch_w_error)]
def get_error(self, image, result):
b_error = [np.zeros(b.shape) for b in self.bias]
w_error = [np.zeros(w.shape) for w in self.weights]
out_data = [image]
in_data = []
for b, w in zip(self.bias, self.weights):
in_data.append(np.dot(out_data[-1], w) + b)
out_data.append(sigmoid(in_data[-1]))
b_error[-1] = ?????????
w_error[-1] = ????????
for l in range(2, self.num_layers):
b_error[-l] = sigmoid_prime(in_data[-l]) * \
np.dot(b_error[-l+1], self.weights[-l+1].transpose())
w_error[-l] = np.dot(out_data[-l-1].transpose(), b_error[-l])
return b_error, w_error
def test_net(self, test_image, test_result):
results = [(np.argmax(self.get_result(image)), result)
for image, result in zip(test_image, test_result)]
right = sum(int(x == y) for (x, y) in results)
print("正确率:{0}/{1}".format(right, len(test_result)))
return results
def save_training(self):
np.savez('./datafile/weights.npz', *self.weights)
np.savez('./datafile/bias.npz', *self.bias)
def read_training(self):
length = len(self.sizes) - 1
file_weights = np.load('./datafile/weights.npz')
file_bias = np.load('./datafile/bias.npz')
self.weights = []
self.bias = []
for i in range(length):
index = "arr_" + str(i)
self.weights.append(file_weights[index])
self.bias.append(file_bias[index])
def sigmoid(x):
*******?????
def sigmoid_prime(x):
** ** ** * ?????
Exp4.rar
需积分: 0 111 浏览量
更新于2022-12-16
收藏 10.34MB RAR 举报
标题“Exp4.rar”可能指的是一个包含多个编程文件和数据集的压缩包,用于学习或实践神经网络和图像识别技术。这个压缩包包含了三个Python脚本:nueralnet-1.py、decodeMinist.py和main.py,以及一个名为datafile.rar的数据集。接下来,我们将深入探讨这些文件可能涉及的IT知识领域。
1. **神经网络**:
- **nueralnet-1.py**:这可能是实现神经网络基础结构的代码,可能包括定义层(如输入层、隐藏层和输出层)、权重初始化、激活函数(如ReLU、sigmoid或tanh)以及反向传播算法等。
- **深度学习框架**:如果这个脚本是独立的,可能使用了诸如TensorFlow、PyTorch或Keras等深度学习库来构建和训练神经网络。
2. **MNIST数据集**:
- **decodeMinist.py**:MNIST是一个常用的手写数字识别数据集,这个脚本可能是用于读取、预处理和显示MNIST数据集,或者对训练好的模型进行测试和验证。
- **数据预处理**:在处理MNIST数据时,通常会进行归一化、reshape、one-hot编码等步骤,使得数据更适合神经网络模型的训练。
3. **主程序**:
- **main.py**:这是整个项目的主要入口,它可能调用前面两个脚本,进行模型训练、参数设置、结果评估等操作。用户可能通过修改这个文件来调整实验设置。
4. **数据file.rar**:
- **数据集**:数据文件rar可能包含了MNIST数据集或其他相关图像数据。在Python中,可以使用`rarfile`库来解压RAR文件,然后使用PIL或OpenCV等库处理图像数据。
5. **Python编程**:
- Python是这个项目的基础语言,涉及到面向对象编程、函数式编程以及模块化设计的概念。
- 文件操作和导入系统:理解如何在Python中导入和使用不同文件是必备技能。
6. **机器学习和图像识别**:
- 这个项目可能涵盖了监督学习的基本概念,其中神经网络作为模型进行训练,以从输入图像中识别出相应的标签。
- 训练过程可能涉及交叉验证、超参数调整和模型优化,例如使用Adam或SGD优化器,以及早停法防止过拟合。
“Exp4.rar”压缩包提供了一个实践神经网络和图像识别的完整环境。从编写神经网络模型到处理数据,再到训练和评估模型,都涉及到一系列IT专业技能。通过研究和运行这些文件,学习者可以深化对深度学习的理解,并掌握实际应用中的关键步骤。
m0_70200117
- 粉丝: 0
- 资源: 1
最新资源
- 光储并网VSG系统Matlab simulink仿真模型,附参考文献 系统前级直流部分包括光伏阵列、变器、储能系统和双向dcdc变器,后级交流子系统包括逆变器LC滤波器,交流负载 光储并网VSG系
- file_241223_024438_84523.pdf
- 质子交膜燃料电池PEMFC Matlab simulink滑模控制模型,过氧比控制,温度控制,阴,阳极气压控制
- IMG20241223015444.jpg
- 模块化多电平变器(MMC),本模型为三相MMC整流器 控制策略:双闭环控制、桥臂电压均衡控制、模块电压均衡控制、环流抑制控制策略、载波移相调制,可供参考学习使用,默认发2020b版本及以上
- Delphi 12 控件之FlashAV FFMPEG VCL Player For Delphi v7.0 for D10-D11 Full Source.7z
- Delphi 12 控件之DevExpressVCLProducts-24.2.3.exe.zip
- Mysql配置文件优化内容 my.cnf
- 中国地级市CO2排放数据(2000-2023年).zip
- smart200光栅报警程序