def main(): patterns = loadData('pict.dat') # Pattern 1-11 patterns_1_3 = [patterns[index, :].reshape(1, 1024) for index in range(3)] patterns_4_11 = [ patterns[3 + index, :].reshape(1, 1024) for index in range(8) ] network = RNN(size=1024, sequential=False, random=False) network.init_weights(patterns_1_3) noises = np.arange(0, 100, 5) averages = 1000 for i, pattern in enumerate(patterns_1_3): OGpattern = pattern.copy() nCorrect = np.zeros((noises.shape[0], 1)) for k, noise in enumerate(noises): for j in range(averages): patternD = distort(OGpattern, noise) x_output = network.train(patternD) nCorrect[k][0] += ((np.count_nonzero(x_output == OGpattern)) / patternD.shape[1]) * 100 nCorrect = nCorrect / averages plt.plot(noises, nCorrect, label=("Pattern " + str(i + 1))) plt.legend() plt.show()
def main(): patterns = loadData('pict.dat') # Pattern 1-11 patterns_1_3 = [patterns[index,:].reshape(1,1024) for index in range(3) ] patterns_4_11 = [patterns[3+index,:].reshape(1,1024) for index in range(8) ] network = RNN(size=1024, sequential=False, random=True) network.init_weights(patterns_1_3) for index, pattern in enumerate(patterns_1_3): energi = network.layapunovFunction(pattern) print('Energi for pattern {}: {}'.format(index, energi)) for index, pattern in enumerate(patterns_4_11): energi = network.layapunovFunction(pattern) print('Energi for distorted pattern {}: {}'.format(3 + index, energi))
def main(): patterns = loadData('pict.dat') # Pattern 1-11 patterns_1_3 = [patterns[index,:].reshape(1,1024) for index in range(3) ] patterns_10_11 = [patterns[9+index,:].reshape(1,1024) for index in range(2) ] network = RNN(size=1024, sequential=True, random=True) network.init_weights(patterns_1_3) # Testing if stable print('\nTesting if stable: ') plt.figure('Attractors - patterns') index = 0 for pattern in patterns_1_3: index += 1 plt.subplot(1, 3, index) plt.title('Pattern: {}'.format(index)) x_output = network.train(pattern) print('Number of correct: {}/{} '.format(np.count_nonzero(x_output==pattern), pattern.shape[1])) plt.imshow(pattern.reshape(32,32), cmap='gray') # Testing for distorted patterns 9 and 10 print('\nTesting for distorted patterns: ') index = 10 for pattern in patterns_10_11: plt.figure('Output - pattern: {}'.format(index)) index += 1 sub_index = 0 x_output = network.train(pattern) for true_pattern in patterns_1_3: sub_index += 1 print('Number of correct: {}/{} '.format(np.count_nonzero(x_output==true_pattern), true_pattern.shape[1])) plt.imshow(x_output.reshape(32,32), cmap='gray') plt.show()