Используя TVM-компилятор , я пытаюсь реализовать 32x32 матричный вектор-множитель (MVM), записанный в TensorFlow , на сервере VTA.
Я ожидаю увидеть, как дизайн будет разложен на 4 операции MVM 16x16, так как конфигурация VTA по умолчанию использует 16-элементный аккумулятор (и я с ним не возился).
Однако график до и после вызова vta.graph.pack()
остается неизменным:
Graph(%W, %x) {
%1 = transpose(%W, axes='(0, 1)')
%2 = reshape(%1, shape='(32, 32)')
%4 = transpose(%x, axes='(0,)')
%5 = reshape(%4, shape='(32, 1)')
%6 = transpose(%5, axes='(1, 0)')
%7 = dense(%2, %6, use_bias='False', units='1')
%8 = reshape(%7, shape='(32,)')
ret %8
}
Graph(%W, %x) {
%1 = transpose(%W, axes='(0, 1)')
%2 = reshape(%1, shape='(32, 32)')
%4 = transpose(%x, axes='(0,)')
%5 = reshape(%4, shape='(32, 1)')
%6 = transpose(%5, axes='(1, 0)')
%7 = dense(%2, %6, use_bias='False', units='1')
%8 = reshape(%7, shape='(32,)')
ret %8
}
graph_attr_keys = [shape_num_unknown_nodes, shape]
Я ожидал увидеть размеры «16» на втором графике выше.
Может кто-нибудь помочь мне понять, что здесь происходит?
Спасибо!