Je n'ai pas fait cela mais c'est possible mais l'implémentation est peut être un peu. Vous pouvez considérer chaque réseau comme une fonction, vous voulez - dans un certain sens - composer ces fonctions pour former votre réseau, pour cela vous pouvez calculer la fonction finale en donnant simplement le résultat d'un réseau à l'autre et ensuite utiliser la chaîne. règle pour calculer les dérivées (en utilisant la différenciation symbolique des deux paquets).
Je pense qu'un bon moyen pour implémenter cela, vous pourriez être d'envelopper les modèles TF comme PyTorch Function
et d'utiliser tf.gradients
pour le calcul de la passe arrière. Faire des mises à jour de gradient peut vraiment devenir difficile (car certaines variables existent dans le graphique de calcul de TF) vous pouvez les transformer en placeholde
s dans le graphique de calcul TF, les nourrir dans feed_dict
et les mettre à jour en utilisant les mécanismes PyTorch, mais je pense Ce serait vraiment difficile à faire, mais si vous faites vos mises à jour à l'intérieur de la méthode en arrière de la fonction, vous pourriez être en mesure de faire le travail (il est vraiment moche mais pourrait faire le travail).
Je voudrais utiliser 'per_process_gpu_memory_fraction' dans TF pour limiter l'utilisation de la mémoire par une seule session et utiliser les files d'attente FIFO pour connecter les deux modèles –
Oui. Mais je ne le recommanderais pas. TF préfère utiliser le GPU seul. –