Словарь в плоский вектор, а затем вектор обратно в словарь - PullRequest
0 голосов
/ 15 апреля 2020

Мне нужно сгладить словарь весов и смещений для проверки градиента, я создал эту функцию, чтобы сгладить свой словарь, который работает, но я не могу найти способ отменить процесс.

@staticmethod
def flatten_dic(dic):
    keys = []
    count = 0
    theta = np.array([])
    for i in dic.keys():
        new_vector = np.reshape(dic[i], (-1, 1))
        keys = keys + [i] * new_vector.shape[0]
        if count == 0:
            theta = new_vector
        else:
            theta = np.concatenate((theta, new_vector), axis=0)
        count = count + 1
    return theta, keys

С входом

{"W1":[[1,2,3],[3,2,1]],"W2":[1,2,3]}

Вывод

[1,2,3,3,2,1,1,2,3]

1 Ответ

0 голосов
/ 15 апреля 2020
r = {"W1":[[1,2,3],[3,2,1]],"W2":[1,2,3]}

result = []

def flatten(_list): 
    if type(_list[0]) == list: 
        for e in _list: 
           flatten(e) 
    else: 
       result.extend(_list) 

[flatten(e) for e in r.values()]

Это даст вам сплющенный список в результате, Это также сохранит ваш оригинальный словарь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...