2017-10-17 2 views
0

J'ai un modèle pytorch et un modèle tensorflow, je veux les former ensemble sur un GPU, en suivant le processus ci-dessous: input --> pytorch model--> output_pytorch --> tensorflow model --> output_tensorflow --> pytorch model.Est-il possible de former ensemble un modèle pytorch et tensorflow sur un GPU?

Est-il possible de faire cela? Si la réponse est oui, y a-t-il un problème que je rencontrerai?

Merci d'avance.

+0

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 –

+0

Oui. Mais je ne le recommanderais pas. TF préfère utiliser le GPU seul. –

Répondre

0

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).