def train(self, training_inputs,training_results, epochs,test_data): #for (x,y) in training_data: training_inputs = list(training_inputs) training_results = list(training_results) self.y_real = training_results # 将训练数据集强转为list n = len(training_inputs) #n=50000 print(n) for j in range(epochs): self.forwardPropagation(training_inputs[j]) self.backwardPropagation(training_results[j]) # 调用梯度下降算法 if j%100 ==0: self.printResult(j) if test_data: # 如果有测试数据集 test_data = list(test_data) # 将测试数据集强转为list n_test = len(test_data) print("Epoch {} : {} / {}".format(j, self.evaluate(test_data), n_test)); # j为迭代期序号 # evaluate(test_data)为测试通过的数据个数 # n_test为测试数据集的大小 else: print("Epoch {} complete".format(j))
时间: 2024-02-14 20:04:48 浏览: 64
训练数据集,测试数据集
这段代码定义了神经网络类的训练方法"train"。它接受四个参数:训练数据集"training_inputs"、训练标签集"training_results"、训练轮数"epochs"和测试数据集"test_data"。
首先,将训练数据集和训练标签集强制转换为列表类型,并将训练标签集赋值给神经网络对象的"y_real"属性。
然后,使用循环进行模型训练,循环次数为"epochs"。在每次循环中,首先调用"forwardPropagation"方法,将当前训练数据集中的第"j"个数据传入神经网络,进行前向传播计算,得到神经网络的预测结果。然后调用"backwardPropagation"方法,进行反向传播计算,更新神经网络中各层的权重和偏置。接下来,根据训练轮数来判断是否需要打印训练结果。如果训练轮数可以被100整除,就调用"printResult"方法打印神经网络的预测结果和实际结果。最后,如果存在测试数据集"test_data",就将测试数据集强制转换为列表类型,并计算测试数据集的大小"n_test"。然后调用"evaluate"方法,计算测试数据集中预测正确的数据个数,并打印出当前训练轮数、测试通过的数据个数和测试数据集的大小。如果没有测试数据集,就只打印当前训练轮数。这样,整个模型训练的过程就完成了。
阅读全文