Hopfield
unknown
python
3 years ago
3.5 kB
3
Indexable
import numpy x = [ 1,1,1,1,0,0,0,0, 0,0,0,0,1,1,1,1, 1,1,1,1,0,0,0,0, 0,0,0,0,1,1,1,1, 1,1,1,1,0,0,0,0, 0,0,0,0,1,1,1,1, 1,1,1,1,0,0,0,0, 0,0,0,0,1,1,1,1 ] # y = [ # 0,0,0,0,1,1,1,1, # 1,1,1,1,0,0,0,0, # 0,0,0,0,1,1,1,1, # 1,1,1,1,0,0,0,0, # 0,0,0,0,1,1,1,1, # 1,1,1,1,0,0,0,0, # 0,0,0,0,1,1,1,1, # 1,1,1,1,0,0,0,0 # ] # y = [ # 1,0,1,0,1,0,1,0, # 1,1,0,1,0,1,0,0, # 1,0,1,0,1,0,1,0, # 1,1,0,1,0,1,0,0, # 1,1,1,1,0,0,0,0, # 1,0,0,0,1,1,1,0, # 1,1,1,1,0,0,0,0, # 1,0,0,0,1,1,1,0 # ] y = [ 1,1,1,1,1,0,0,0, 0,0,0,0,1,1,1,1, 1,1,1,1,0,0,0,0, 0,0,0,0,1,1,1,1, 1,1,1,1,0,0,0,0, 0,0,0,0,1,1,1,1, 1,1,1,1,0,0,0,0, 0,0,0,0,1,1,1,1 ] def vectorValidator(vector): vectorArray = vector.split(',') if (len(vectorArray) != 64): return False for index, element in enumerate(vectorArray): vectorArray[index] = int(element) if (vectorArray[index] != 1 and vectorArray[index] != 0): return False return vectorArray def defineOwnVector(): print('Czy chcesz podać własny wektor? (t/n): ') ownVectorDecision = "" while True: ownVectorDecision = input() if (ownVectorDecision != "t" or ownVectorDecision != "tak" or "n" or "nie"): break ownVector = "" if (ownVectorDecision == "t" or ownVectorDecision == "tak"): while True: print('Wprowadź 64 elementy wektora (tylko 0 i 1), kolejne elementy oddzielaj przecinkiem: \n') ownVector = input() validatedVector = vectorValidator(ownVector) if (validatedVector): return validatedVector if (not validatedVector): print('Wprowadzono błędny wektor... \n') return False def makeMatrix(baseVector): matrix = {} for index, pixel in enumerate(baseVector): for index2 in range(len(baseVector)): if (index == index2): matrix[index, index2] = 0 continue matrix[index, index2] = (2 * baseVector[index] - 1) * (2 * baseVector[index2] -1) return matrix def prepareTestVector(matrix, y): testVector = [] for index in range(64): element = 0 for index2, pixelTest in enumerate(y): element = element + (pixelTest * matrix[index,index2]) testVector.append(element) return testVector def compareTestVector(testVector): result = [] for index, element in enumerate(testVector): if (element > 0): result.append(1) if (element < 0): result.append(0) if (element == 0): result.append(testVector[index]) return result def printImage(image): row = '' for index, pixel in enumerate(image): if ((index + 1) % 8 == 0): row = row + str(pixel) + ', \n' continue row = row + str(pixel) + ',' print(row) def checkAndPrintResult(resultImage, baseImage): equal = numpy.array_equal(resultImage, baseImage) if (equal): print('Rozpoznany') if (not equal): print('Nie rozpoznany') definedVector = defineOwnVector() if (not definedVector): definedVector = y testVector = prepareTestVector(makeMatrix(x), definedVector) resultVector = compareTestVector(testVector) printImage(resultVector) checkAndPrintResult(resultVector, x)
Editor is loading...