2017-01-17 1 views
0

Je me rends compte que je peux faire mon propre module/optimiseur pour cela, mais peut-on dire aux modules mxnet existants d'optimiser seulement un sous-ensemble de variables? Dans le même ordre d'idées, comment un module détermine-t-il les symboles à optimiser tels quels? Par exemple, contrairement à tensorflow dans MXNet, les données et les variables à optimiser ne sont que des symboles "Variable", mais en quelque sorte MXNet affecte uniquement les NDArrays pour les variables réelles et non les données NDArrays. Comment ça vérifie? Y a-t-il une convention de nommage qu'il utilise? Si oui, quelle est cette convention? (Tout symbole avec un nom contenant 'données' n'est pas optimisé?)Comment un module/optimiseur choisit-il les symboles à optimiser?

Répondre

0

Bien que je ne l'ai pas testé, en regardant le document et la source, je pense avoir la réponse.

Dans un constructeur de module, il existe un argument par défaut nommé data_names qui est une liste de chaînes pour les noms de symboles qui sont des objets de données et ne doivent pas être optimisés (similaire pour les étiquettes). De plus, il existe également un argument par défaut nommé fixed_param_names qui est une liste de chaînes spécifiant une liste noire de Variables à ne pas optimiser.

+0

Une autre option pourrait être l'utilisation de l'optimiseur set_lr_mult api, qui peut être utilisé pour contrôler le taux d'apprentissage de paramètres spécifiques. – kevinthesun