Пример #1
0
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())
Пример #2
0
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],