from network import Network from activation import Activation network = Network() network.add_input_layer(2) network.add_hidden_layer(2, Activation.ReLU) network.add_output_layer(1) network.connect() network.feed([1, 1]) network.init() network.layers[1].nodes[0].weights[0] = -0.5 network.layers[1].nodes[0].weights[1] = 0.5 network.layers[1].nodes[1].weights[0] = -1 network.layers[1].nodes[1].weights[1] = -1 network.activate() # for layer in network.layers: # print("Layer " + layer.id + " " + str(layer.type))
class NumbersApp(QtWidgets.QMainWindow, numbersGUI.Ui_MainWindow): networkObject = None def __init__(self): # Это здесь нужно для доступа к переменным, методам # и т.д. в файле gui super().__init__() self.networkObject = Network() self.setupUi(self) # Это нужно для инициализации нашего дизайна self.setMouseTracking(True) self.pushButton.clicked.connect(self.clear) self.pushButton_2.clicked.connect(self.learn) self.pushButton_3.clicked.connect(self.activate) self.horizontalSlider.setValue(0) self.horizontalSlider_2.setValue(0) self.horizontalSlider_3.setValue(0) self.horizontalSlider_4.setValue(0) self.horizontalSlider_5.setValue(0) self.horizontalSlider_6.setValue(0) self.horizontalSlider_7.setValue(0) self.horizontalSlider_8.setValue(0) self.horizontalSlider_9.setValue(0) self.horizontalSlider_10.setValue(0) self.textEdit.setText('1') #draw field self.scene = QGraphicsScene() view = QGraphicsView(self.scene, self) view.viewport().installEventFilter(self) width, height = settings.fieldWidth, settings.fieldWidth view.setGeometry(0, 0, width, height) self.initImage(width - 5, height - 5) settings.pixelWidth = 20 settings.pixelHeight = 20 #init field self.field = [[0] * settings.pixelWidth for i in range(settings.pixelHeight)] self.draw() def eventFilter(self, source, event): if event.type() == QtCore.QEvent.MouseMove and ( event.buttons() == QtCore.Qt.LeftButton or event.buttons() == QtCore.Qt.RightButton): pos = event.pos() x = pos.x() / settings.pixelWidth y = pos.y() / settings.pixelHeight if event.type() == QtCore.QEvent.MouseMove: if event.buttons() == QtCore.Qt.NoButton: pass #print("Simple mouse motion") elif event.buttons() == QtCore.Qt.LeftButton: try: self.field[int(y)][int(x)] = 1 self.field[int(y) + 1][int(x) + 1] = 1 self.field[int(y)][int(x) + 1] = 1 self.field[int(y) + 1][int(x)] = 1 self.putPixel(int(x), int(y)) self.putPixel(int(x) + 1, int(y) + 1) self.putPixel(int(x), int(y) + 1) self.putPixel(int(x) + 1, int(y)) except Exception: pass elif event.buttons() == QtCore.Qt.RightButton: try: self.field[int(y)][int(x)] = 0 self.field[int(y) + 1][int(x) + 1] = 0 self.field[int(y)][int(x) + 1] = 0 self.field[int(y) + 1][int(x)] = 0 self.putPixel(int(x), int(y), 0) self.putPixel(int(x) + 1, int(y) + 1, 0) self.putPixel(int(x), int(y) + 1, 0) self.putPixel(int(x) + 1, int(y), 0) except Exception: pass elif event.type() == QtCore.QEvent.MouseButtonPress: if event.button() == QtCore.Qt.LeftButton: pass #print("Press!") return super(NumbersApp, self).eventFilter(source, event) def draw(self): pixelInRow = int(settings.fieldWidth / settings.pixelWidth) pixelInColumn = int(settings.fieldHeight / settings.pixelHeight) for i in range(pixelInRow): for j in range(pixelInColumn): if self.field[i][j] == 1: self.putPixel(i, j) if self.field[i][j] == 0: self.putPixel(i, j, 0) def putPixel(self, x, y, color=1): for i in range(x * settings.pixelWidth, x * settings.pixelWidth + settings.pixelWidth): for j in range(y * settings.pixelHeight, y * settings.pixelHeight + settings.pixelHeight): if i <= 394 and j <= 394: if color == 1: self.image.setPixel(i, j, QColor(0, 0, 0, 0).rgb()) elif color == 0: self.image.setPixel(i, j, QColor(255, 255, 255, 255).rgb()) else: self.image.setPixel(i, j, QColor(255, 255, 255, 255).rgb()) self.scene.addPixmap(QPixmap.fromImage(self.image)) def initImage(self, width, height): self.image = QImage(width, height, QImage.Format_ARGB32) red = 255 green = 255 blue = 255 for x in range(self.image.width()): for y in range(self.image.height()): self.image.setPixel(x, y, QColor(red, green, blue, 255).rgb()) self.scene.addPixmap(QPixmap.fromImage(self.image)) def click(self): self.textEdit.setText('CLICK') def clear(self): for i in range(20): for j in range(20): self.field[i][j] = 0 self.draw() def learn(self): self.image_save() #number = self.textEdit.toPlainText() #self.networkObject.addSample(self.field, number) def activate(self): answer = self.networkObject.activate(self.field) self.horizontalSlider_10.setValue(answer[0]) # 0 self.horizontalSlider.setValue(answer[1]) self.horizontalSlider_2.setValue(answer[2]) self.horizontalSlider_3.setValue(answer[3]) self.horizontalSlider_4.setValue(answer[4]) self.horizontalSlider_5.setValue(answer[5]) self.horizontalSlider_6.setValue(answer[6]) self.horizontalSlider_7.setValue(answer[7]) self.horizontalSlider_8.setValue(answer[8]) self.horizontalSlider_9.setValue(answer[9]) def convertInputs(self, inputs): result = [] for row in inputs: result += row return result def image_save(self): data = Data() result = self.textEdit.toPlainText() data.add(self.convertInputs(self.field), result)