Как сделать, чтобы динамическое изменение графика функции не продолжалось после очистки графич. поверхности
Есть данный код. Суть его в том, что здесь выполняется аппроксимация функции нейронной сетью, то есть один график в форме scatter приближается исходному графику функции.
Проблема в том, что при нажатии на кнопку "Очистить граф. поверхность" у меня она очищается, но нейронная сеть продолжает обучаться и предсказывать значения функции, то есть мне как бы хочется, чтобы было всё заново, с самого начала происходила аппроксимация, а не где-то с середины после очистки граф. поверхности graphicsview.
Код:
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *
from pyqtgraph import PlotWidget
import numpy as np
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1102, 819)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setStyleSheet("background-color: rgb(10, 170, 0);\n"
"background-color: rgb(73, 152, 255);")
self.centralwidget.setObjectName("centralwidget")
self.graphicsView = PlotWidget(self.centralwidget)
self.graphicsView.setGeometry(QtCore.QRect(420, 30, 621, 631))
self.graphicsView.setObjectName("graphicsView")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(30, 500, 341, 41))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.pushButton.setFont(font)
self.pushButton.setStyleSheet("background: rgb(90, 211, 255)")
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_2.setGeometry(QtCore.QRect(30, 610, 341, 41))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.pushButton_2.setFont(font)
self.pushButton_2.setStyleSheet("background: rgb(90, 211, 255)")
self.pushButton_2.setObjectName("pushButton_2")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(30, 270, 331, 21))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label_4.setFont(font)
self.label_4.setObjectName("label_4")
self.label_5 = QtWidgets.QLabel(self.centralwidget)
self.label_5.setGeometry(QtCore.QRect(30, 340, 351, 21))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label_5.setFont(font)
self.label_5.setObjectName("label_5")
self.textEdit_6 = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit_6.setGeometry(QtCore.QRect(30, 450, 221, 31))
self.textEdit_6.setStyleSheet("background: rgb(255, 255, 255)")
self.textEdit_6.setObjectName("textEdit_6")
self.label_6 = QtWidgets.QLabel(self.centralwidget)
self.label_6.setGeometry(QtCore.QRect(10, 420, 391, 21))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label_6.setFont(font)
self.label_6.setObjectName("label_6")
self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
self.groupBox.setGeometry(QtCore.QRect(30, 30, 321, 231))
font = QtGui.QFont()
font.setPointSize(10)
self.groupBox.setFont(font)
self.groupBox.setObjectName("groupBox")
self.label = QtWidgets.QLabel(self.groupBox)
self.label.setGeometry(QtCore.QRect(10, 30, 291, 21))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(self.groupBox)
self.label_2.setGeometry(QtCore.QRect(10, 100, 291, 21))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(self.groupBox)
self.label_3.setGeometry(QtCore.QRect(10, 160, 291, 21))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label_3.setFont(font)
self.label_3.setObjectName("label_3")
self.textEdit_9 = QtWidgets.QTextEdit(self.groupBox)
self.textEdit_9.setGeometry(QtCore.QRect(10, 190, 221, 31))
self.textEdit_9.setStyleSheet("background: rgb(255, 255, 255)")
self.textEdit_9.setObjectName("textEdit_9")
self.textEdit_10 = QtWidgets.QTextEdit(self.groupBox)
self.textEdit_10.setGeometry(QtCore.QRect(10, 120, 221, 31))
self.textEdit_10.setStyleSheet("background: rgb(255, 255, 255)")
self.textEdit_10.setObjectName("textEdit_10")
self.textEdit_11 = QtWidgets.QTextEdit(self.groupBox)
self.textEdit_11.setGeometry(QtCore.QRect(10, 60, 221, 31))
self.textEdit_11.setStyleSheet("background: rgb(255, 255, 255)")
self.textEdit_11.setObjectName("textEdit_11")
self.textEdit_7 = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit_7.setGeometry(QtCore.QRect(30, 370, 221, 31))
self.textEdit_7.setStyleSheet("background: rgb(255, 255, 255)")
self.textEdit_7.setObjectName("textEdit_7")
self.textEdit_8 = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit_8.setGeometry(QtCore.QRect(30, 300, 221, 31))
self.textEdit_8.setStyleSheet("background: rgb(255, 255, 255)")
self.textEdit_8.setObjectName("textEdit_8")
self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_3.setGeometry(QtCore.QRect(30, 560, 341, 41))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.pushButton_3.setFont(font)
self.pushButton_3.setStyleSheet("background: rgb(90, 211, 255)")
self.pushButton_3.setObjectName("pushButton_3")
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Аппроксимация функции нейронной сетью"))
self.pushButton.setText(_translate("MainWindow", "Построить аппроксимацию функции"))
self.pushButton_2.setText(_translate("MainWindow", "Очистить графич.поверхность"))
self.label_4.setText(_translate("MainWindow", "Скорость обучения(learning rate)"))
self.label_5.setText(_translate("MainWindow", "Количество эпох(number of iterations)"))
self.label_6.setText(_translate("MainWindow", "Количество итераций(number of iterations)"))
self.groupBox.setTitle(_translate("MainWindow", "Количество нейронов в каждом слое"))
self.label.setText(_translate("MainWindow", "Входной слой(Input Layer)"))
self.label_2.setText(_translate("MainWindow", "Скрытый слой(Hidden Layer)"))
self.label_3.setText(_translate("MainWindow", "Выходной слой(Output Layer)"))
self.pushButton_3.setText(_translate("MainWindow", "Остановить процесс аппроксимации"))
#Модифицированная нейросеть
class PartyNN(object):
def __init__(self, learning_rate=0.1, input_nodes=1, hidden_nodes=5, output_nodes=1):
input_nodes+=1
self.weights_0_1 = np.random.normal(0.0, hidden_nodes ** -0.5, (hidden_nodes, input_nodes))
self.weights_1_2 = np.random.normal(0.0, output_nodes ** -0.5, (output_nodes, hidden_nodes))
self.sigmoid_mapper = np.vectorize(self.sigmoid)
self.learning_rate = np.array([learning_rate])
def set_lr(lr):
self.learning_rate = np.array([lr])
def sigmoid(self, x):
return 1 / (1 + np.exp(-x))
def predict(self, inputs):
inputs = np.concatenate((inputs,[1]))
inputs_1 = np.dot(self.weights_0_1, inputs)
outputs_1 = self.sigmoid_mapper(inputs_1)
inputs_2 = np.dot(self.weights_1_2, outputs_1)
#outputs_2 = self.sigmoid_mapper(inputs_2)
outputs_2 = inputs_2
return outputs_2
def train(self, inputs, expected_predict):
inputs = np.concatenate((inputs,[1]))
inputs_1 = np.dot(self.weights_0_1, inputs)
outputs_1 = self.sigmoid_mapper(inputs_1)
inputs_2 = np.dot(self.weights_1_2, outputs_1)
#outputs_2 = self.sigmoid_mapper(inputs_2)
outputs_2 = inputs_2
actual_predict = outputs_2[0]
error_layer_2 = np.array([actual_predict - expected_predict])
gradient_layer_2 = 1 # Здесь что-то я не так сделал. Нужно учитывать вес# actual_predict * (1 - actual_predict)
weights_delta_layer_2 = error_layer_2 * gradient_layer_2
self.weights_1_2 -= (np.dot(weights_delta_layer_2, outputs_1.reshape(1, len(outputs_1)))) * self.learning_rate
error_layer_1 = weights_delta_layer_2 * self.weights_1_2
gradient_layer_1 = outputs_1 * (1 - outputs_1)
weights_delta_layer_1 = error_layer_1 * gradient_layer_1
self.weights_0_1 -= np.dot(inputs.reshape(len(inputs), 1), weights_delta_layer_1).T * self.learning_rate
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
self.flag = True
self.pushButton.clicked.connect(lambda:self.draw())
self.pushButton_2.clicked.connect(lambda:self.clear())
self.pushButton_3.clicked.connect(self.stop_start)
self.pcenter = 0
self.prange = 10
self.step = 0.1
period = np.arange(self.pcenter-self.prange, self.pcenter+self.prange, self.step)
lr = 0.00005
self.myNN = PartyNN(learning_rate=lr, input_nodes=1, hidden_nodes=50, output_nodes=1)
self.set_count = 100
rand_set = np.random.random(self.set_count)*2*self.prange-self.prange+self.pcenter
def stop_start(self):
self.flag = not self.flag
if self.flag:
self.pushButton_3.setText("Остановить процесс аппроксимации")
self.draw()
else:
self.pushButton_3.setText("Возобновить процесс аппроксимации")
#Тестовая функция
def ApproxFunc(self,x):
return np.sin(x)*10 + x**2
#Функция обучения
def Train(self):
rand_set = np.random.random(self.set_count)*2*self.prange-self.prange+self.pcenter
for x in range(0, self.set_count-1):
self.myNN.train([rand_set[x]], self.ApproxFunc(rand_set[x]))
def MSE(y, Y):
return np.mean((y-Y)**2)
def draw(self):
period = np.arange(self.pcenter-self.prange, self.pcenter+self.prange, self.step)
epochs = 100
for e in range(epochs):
for tr in range(100):
self.Train()
app.processEvents()
if not self.flag:
break
self.clear()
self.graphicsView.plot(period, self.ApproxFunc(period),pen=(1,3))
rand_set = np.random.random(self.set_count)*2*self.prange-self.prange+self.pcenter
result_set=np.zeros(100)
MSE = 0
for x in range(0, 50):
result_set[x] = self.myNN.predict([rand_set[x]])
MSE += (self.ApproxFunc(rand_set[x]) - result_set[x])**2
self.graphicsView.plot([rand_set[x]],[result_set[x]], pen=(1,2),symbol='o')
app.processEvents()
if not self.flag:
break
def clear(self):
self.graphicsView.clear()
def closeEvent(self, event):
reply = QMessageBox.question\
(self, 'Информация',
"Вы уверены, что хотите уйти?",
QMessageBox.Yes,
QMessageBox.No)
if reply == QMessageBox.Yes:
self.flag = False
event.accept()
else:
event.ignore()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
Ответы (1 шт):
Автор решения: S. Nick
→ Ссылка
Как вариант
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.Qt import *
from pyqtgraph import PlotWidget
import numpy as np
class Ui_MainWindow(object):
def setupUi(self, MainWindow):
MainWindow.setObjectName("MainWindow")
MainWindow.resize(1102, 819)
self.centralwidget = QtWidgets.QWidget(MainWindow)
self.centralwidget.setStyleSheet("background-color: rgb(10, 170, 0);\n"
"background-color: rgb(73, 152, 255);")
self.centralwidget.setObjectName("centralwidget")
self.graphicsView = PlotWidget(self.centralwidget)
self.graphicsView.setGeometry(QtCore.QRect(420, 30, 621, 631))
self.graphicsView.setObjectName("graphicsView")
self.pushButton = QtWidgets.QPushButton(self.centralwidget)
self.pushButton.setGeometry(QtCore.QRect(30, 500, 341, 41))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.pushButton.setFont(font)
self.pushButton.setStyleSheet("background: rgb(90, 211, 255)")
self.pushButton.setObjectName("pushButton")
self.pushButton_2 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_2.setGeometry(QtCore.QRect(30, 610, 341, 41))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.pushButton_2.setFont(font)
self.pushButton_2.setStyleSheet("background: rgb(90, 211, 255)")
self.pushButton_2.setObjectName("pushButton_2")
self.label_4 = QtWidgets.QLabel(self.centralwidget)
self.label_4.setGeometry(QtCore.QRect(30, 270, 331, 21))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label_4.setFont(font)
self.label_4.setObjectName("label_4")
self.label_5 = QtWidgets.QLabel(self.centralwidget)
self.label_5.setGeometry(QtCore.QRect(30, 340, 351, 21))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label_5.setFont(font)
self.label_5.setObjectName("label_5")
self.textEdit_6 = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit_6.setGeometry(QtCore.QRect(30, 450, 221, 31))
self.textEdit_6.setStyleSheet("background: rgb(255, 255, 255)")
self.textEdit_6.setObjectName("textEdit_6")
self.label_6 = QtWidgets.QLabel(self.centralwidget)
self.label_6.setGeometry(QtCore.QRect(10, 420, 391, 21))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label_6.setFont(font)
self.label_6.setObjectName("label_6")
self.groupBox = QtWidgets.QGroupBox(self.centralwidget)
self.groupBox.setGeometry(QtCore.QRect(30, 30, 321, 231))
font = QtGui.QFont()
font.setPointSize(10)
self.groupBox.setFont(font)
self.groupBox.setObjectName("groupBox")
self.label = QtWidgets.QLabel(self.groupBox)
self.label.setGeometry(QtCore.QRect(10, 30, 291, 21))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label.setFont(font)
self.label.setObjectName("label")
self.label_2 = QtWidgets.QLabel(self.groupBox)
self.label_2.setGeometry(QtCore.QRect(10, 100, 291, 21))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label_2.setFont(font)
self.label_2.setObjectName("label_2")
self.label_3 = QtWidgets.QLabel(self.groupBox)
self.label_3.setGeometry(QtCore.QRect(10, 160, 291, 21))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.label_3.setFont(font)
self.label_3.setObjectName("label_3")
self.textEdit_9 = QtWidgets.QTextEdit(self.groupBox)
self.textEdit_9.setGeometry(QtCore.QRect(10, 190, 221, 31))
self.textEdit_9.setStyleSheet("background: rgb(255, 255, 255)")
self.textEdit_9.setObjectName("textEdit_9")
self.textEdit_10 = QtWidgets.QTextEdit(self.groupBox)
self.textEdit_10.setGeometry(QtCore.QRect(10, 120, 221, 31))
self.textEdit_10.setStyleSheet("background: rgb(255, 255, 255)")
self.textEdit_10.setObjectName("textEdit_10")
self.textEdit_11 = QtWidgets.QTextEdit(self.groupBox)
self.textEdit_11.setGeometry(QtCore.QRect(10, 60, 221, 31))
self.textEdit_11.setStyleSheet("background: rgb(255, 255, 255)")
self.textEdit_11.setObjectName("textEdit_11")
self.textEdit_7 = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit_7.setGeometry(QtCore.QRect(30, 370, 221, 31))
self.textEdit_7.setStyleSheet("background: rgb(255, 255, 255)")
self.textEdit_7.setObjectName("textEdit_7")
self.textEdit_8 = QtWidgets.QTextEdit(self.centralwidget)
self.textEdit_8.setGeometry(QtCore.QRect(30, 300, 221, 31))
self.textEdit_8.setStyleSheet("background: rgb(255, 255, 255)")
self.textEdit_8.setObjectName("textEdit_8")
self.pushButton_3 = QtWidgets.QPushButton(self.centralwidget)
self.pushButton_3.setGeometry(QtCore.QRect(30, 560, 341, 41))
font = QtGui.QFont()
font.setPointSize(10)
font.setBold(True)
font.setWeight(75)
self.pushButton_3.setFont(font)
self.pushButton_3.setStyleSheet("background: rgb(90, 211, 255)")
self.pushButton_3.setObjectName("pushButton_3")
MainWindow.setCentralWidget(self.centralwidget)
self.statusbar = QtWidgets.QStatusBar(MainWindow)
self.statusbar.setObjectName("statusbar")
MainWindow.setStatusBar(self.statusbar)
self.retranslateUi(MainWindow)
QtCore.QMetaObject.connectSlotsByName(MainWindow)
def retranslateUi(self, MainWindow):
_translate = QtCore.QCoreApplication.translate
MainWindow.setWindowTitle(_translate("MainWindow", "Аппроксимация функции нейронной сетью"))
self.pushButton.setText(_translate("MainWindow", "Построить аппроксимацию функции"))
self.pushButton_2.setText(_translate("MainWindow", "Очистить графич.поверхность"))
self.label_4.setText(_translate("MainWindow", "Скорость обучения(learning rate)"))
self.label_5.setText(_translate("MainWindow", "Количество эпох(number of iterations)"))
self.label_6.setText(_translate("MainWindow", "Количество итераций(number of iterations)"))
self.groupBox.setTitle(_translate("MainWindow", "Количество нейронов в каждом слое"))
self.label.setText(_translate("MainWindow", "Входной слой(Input Layer)"))
self.label_2.setText(_translate("MainWindow", "Скрытый слой(Hidden Layer)"))
self.label_3.setText(_translate("MainWindow", "Выходной слой(Output Layer)"))
self.pushButton_3.setText(_translate("MainWindow", "Остановить процесс аппроксимации"))
#Модифицированная нейросеть
class PartyNN(object):
def __init__(self, learning_rate=0.1, input_nodes=1, hidden_nodes=5, output_nodes=1):
input_nodes+=1
self.weights_0_1 = np.random.normal(0.0, hidden_nodes ** -0.5, (hidden_nodes, input_nodes))
self.weights_1_2 = np.random.normal(0.0, output_nodes ** -0.5, (output_nodes, hidden_nodes))
self.sigmoid_mapper = np.vectorize(self.sigmoid)
self.learning_rate = np.array([learning_rate])
def set_lr(lr):
self.learning_rate = np.array([lr])
def sigmoid(self, x):
return 1 / (1 + np.exp(-x))
def predict(self, inputs):
inputs = np.concatenate((inputs,[1]))
inputs_1 = np.dot(self.weights_0_1, inputs)
outputs_1 = self.sigmoid_mapper(inputs_1)
inputs_2 = np.dot(self.weights_1_2, outputs_1)
#outputs_2 = self.sigmoid_mapper(inputs_2)
outputs_2 = inputs_2
return outputs_2
def train(self, inputs, expected_predict):
inputs = np.concatenate((inputs,[1]))
inputs_1 = np.dot(self.weights_0_1, inputs)
outputs_1 = self.sigmoid_mapper(inputs_1)
inputs_2 = np.dot(self.weights_1_2, outputs_1)
#outputs_2 = self.sigmoid_mapper(inputs_2)
outputs_2 = inputs_2
actual_predict = outputs_2[0]
error_layer_2 = np.array([actual_predict - expected_predict])
gradient_layer_2 = 1 # Здесь что-то я не так сделал. Нужно учитывать вес# actual_predict * (1 - actual_predict)
weights_delta_layer_2 = error_layer_2 * gradient_layer_2
self.weights_1_2 -= (np.dot(weights_delta_layer_2, outputs_1.reshape(1, len(outputs_1)))) * self.learning_rate
error_layer_1 = weights_delta_layer_2 * self.weights_1_2
gradient_layer_1 = outputs_1 * (1 - outputs_1)
weights_delta_layer_1 = error_layer_1 * gradient_layer_1
self.weights_0_1 -= np.dot(inputs.reshape(len(inputs), 1), weights_delta_layer_1).T * self.learning_rate
class MainWindow(QtWidgets.QMainWindow, Ui_MainWindow):
def __init__(self):
super().__init__()
self.setupUi(self)
# self.pushButton.clicked.connect(self.draw) # ---
self.pushButton.clicked.connect(self.start_func) # +++
self.pushButton_2.clicked.connect(self.clear) # !!!
self.pushButton_3.clicked.connect(self.stop_start)
# ----> vvvvvvvvvvvvvv <------------------------------------------------- # +++
def initMainWindow(self):
self.flag = True
self.pcenter = 0
self.prange = 10
self.step = 0.1
period = np.arange(self.pcenter-self.prange, self.pcenter+self.prange, self.step)
lr = 0.00005
self.myNN = PartyNN(learning_rate=lr, input_nodes=1, hidden_nodes=50, output_nodes=1)
self.set_count = 100
rand_set = np.random.random(self.set_count)*2*self.prange-self.prange+self.pcenter
def start_func(self): # +++
self.initMainWindow() # +++
self.draw() # +++
def clear(self):
self.flag = False # +++
# self.graphicsView.clear() # ---
QtCore.QTimer.singleShot(4000, self.graphicsView.clear) # +++
def stop_start(self):
self.flag = not self.flag
if self.flag:
self.pushButton_3.setText("Остановить процесс аппроксимации")
self.draw()
else:
self.pushButton_3.setText("Возобновить процесс аппроксимации")
#Тестовая функция
def ApproxFunc(self,x):
return np.sin(x)*10 + x**2
#Функция обучения
def Train(self):
rand_set = np.random.random(self.set_count)*2*self.prange-self.prange+self.pcenter
for x in range(0, self.set_count-1):
self.myNN.train([rand_set[x]], self.ApproxFunc(rand_set[x]))
def MSE(y, Y):
return np.mean((y-Y)**2)
def draw(self):
period = np.arange(self.pcenter-self.prange, self.pcenter+self.prange, self.step)
epochs = 100
for e in range(epochs):
for tr in range(100):
self.Train()
app.processEvents()
if not self.flag:
break
# self.clear() # ---
self.graphicsView.clear() # +++
self.graphicsView.plot(period, self.ApproxFunc(period),pen=(1,3))
rand_set = np.random.random(self.set_count)*2*self.prange-self.prange+self.pcenter
result_set=np.zeros(100)
MSE = 0
for x in range(0, 50):
result_set[x] = self.myNN.predict([rand_set[x]])
MSE += (self.ApproxFunc(rand_set[x]) - result_set[x])**2
self.graphicsView.plot([rand_set[x]],[result_set[x]], pen=(1,2),symbol='o')
app.processEvents()
if not self.flag:
break
def closeEvent(self, event):
reply = QMessageBox.question\
(self, 'Информация',
"Вы уверены, что хотите уйти?",
QMessageBox.Yes,
QMessageBox.No)
if reply == QMessageBox.Yes:
self.flag = False
event.accept()
else:
event.ignore()
if __name__ == "__main__":
import sys
app = QtWidgets.QApplication(sys.argv)
w = MainWindow()
w.show()
sys.exit(app.exec_())
