Niedawno wdrożył model i kiedy prowadził ją dostałam to ostrzeżenie:Tensorflow - gęste wyjaśnienie gradientu?
UserWarning: Converting sparse IndexedSlices to a dense Tensor of unknown shape.
This may consume a large amount of memory.
"Converting sparse IndexedSlices to a dense Tensor of unknown shape. "
Z niektórych podobnych ustawień parametrów (zatapiania wymiarowości) nagle modelu jest śmiesznie powolna.
- Co oznacza to ostrzeżenie? Wygląda na to, że coś, co zrobiłem, spowodowało, że wszystkie gradienty są gęste, a więc backprop wykonuje gęstą matrycę.
- Jeśli jest problem z modelem, który to powoduje, jak mogę go zidentyfikować i naprawić ?
Dziękuję za wyjaśnienia. Jak mogę określić, które op powoduje to? – Taaam
Najprostszym sposobem jest przejrzenie twojego kodu dla 'tf.gather()' lub 'tf.nn.embedding_lookup() 'wywołania, znajdź tensor' t', który jest argumentem 'params' (pierwszy) dla każdego z tych opów i wypisz' t.op'. Ogólnie rzecz biorąc, uzyskasz najlepszą wydajność, jeśli 't' jest' tf.Variable', ale niektóre operacje, takie jak 'tf.concat()' mają specjalizacje, które sprawiają, że gradienty są wydajne. – mrry
Wygląda na to, że 'boolean_mask' jest karmione' reshape'. Jest to używane w obliczeniach strat daleko na wykresie po mulitple 'reshape's,' pack's, 'tile's,' expand_dim's, 'squeeze's,' batch_matmul's, itd. Czy istnieje sposób określić, które op (s) nie mogą zaakceptować rzadkich gradientów? – Taaam