Пример #1
0
def compress_(path_feature_map, learning_rate):
    path_feature_map = copy(path_feature_map)

    feature_vectors = np.array(list(path_feature_map.values()))
    vector_size = feature_vectors.shape[2]
    feature_vectors = feature_vectors.reshape(-1, vector_size)

    feature_vectors /= np.sum(feature_vectors)
    #feature_vectors /= np.mean(feature_vectors)
    #feature_vectors = np.std(feature_vectors, axis=0)
    #print(np.std(feature_vectors, axis=0))
    #print(np.sum(feature_vectors, axis=0))
    #print(feature_vectors)

    autoencoder = Autoencoder(
        feature_vectors, 
        n_visible=feature_vectors.shape[1], 
        n_hidden=n_components,
        learning_rate=learning_rate
    )

    for epoch in range(n_iter):
        autoencoder.train() 

    for path, vector in path_feature_map.items():
        v = autoencoder.get_hidden_values(vector)
        path_feature_map[path] = v
    
    error = autoencoder.negative_log_likelihood()
    error = abs(error)
    return path_feature_map, error