def tensorSOM(): import numpy as np from som import SOM import tensorflow as tf sess = tf.InteractiveSession() map_size = 30 s = SOM(input_shape=(num_features, ), map_size_n=map_size, num_expected_iterations=epochs, session=sess) sess.run(tf.initialize_all_variables()) #Training inputs for i in range(10): print('Epoch: {0}'.format(i)) rnd_ind = np.random.randint(0, len(X)) s.train(X[rnd_ind, :]) print(np.reshape(s.get_weights(), [map_size, map_size, num_features])) print(np.array(y) * s.get_weights())
data = list() for i in range(colors.shape[0]): data.append(torch.FloatTensor(colors[i, :])) #Train a 20x30 SOM with 100 iterations n_iter = 100 som = SOM(m, n, 3, n_iter) for iter_no in range(n_iter): #Train with each vector one by one for i in range(len(data)): som(data[i], iter_no) #Store a centroid grid for easy retrieval later on centroid_grid = [[] for i in range(m)] weights = som.get_weights() locations = som.get_locations() for i, loc in enumerate(locations): centroid_grid[loc[0]].append(weights[i].numpy()) #Get output grid image_grid = centroid_grid #Map colours to their closest neurons mapped = som.map_vects(torch.Tensor(colors)) #Plot plt.imshow(image_grid) plt.title('Color SOM') for i, m in enumerate(mapped): plt.text(m[1],