Was bedeuten die Optionen in ConfigProto wie allow_soft_placement und log_device_placement?

9

Wir sehen das oft in vielen TensorFlow Tutorials:

%Vor%

Was bedeutet allow_soft_placement und log_device_placement ?

    
jkschin 02.07.2017, 17:10
quelle

2 Antworten

9

Wenn Sie sich die API von ConfigProto online ansehen 278, werden Sie das sehen:

%Vor%

Was das wirklich bedeutet, ist, dass, wenn Sie so etwas ohne allow_soft_placement=True machen, TensorFlow einen Fehler auslösen wird.

%Vor%

Direkt darunter sehen Sie in Zeile 281:

%Vor%

Wenn log_device_placement=True , erhalten Sie eine ausführliche Ausgabe von etwa so:

%Vor%

Sie können sehen, wo jeder Vorgang zugeordnet ist. Für diesen Fall werden sie alle auf /cpu:0 abgebildet, aber wenn Sie sich in einer verteilten Umgebung befinden, gibt es viel mehr Geräte.

    
jkschin 02.07.2017, 17:10
quelle
6

Zusätzlich zu Kommentaren in tensorflow / core / protobuf / config. Proto ( allow_soft_placement , log_device_placement ) es wird auch in TF Verwendung des GPU-Lernprogramms .

  

Um herauszufinden, welchen Geräten Ihre Operationen und Tensoren zugewiesen sind,   Erstellen Sie die Sitzung mit der Konfigurationsoption log_device_placement configuration   zu Wahr.

Was beim Debuggen hilfreich ist. Für jeden der Knoten Ihres Diagramms sehen Sie das Gerät, dem es zugewiesen wurde.

  

Wenn Sie möchten, dass TensorFlow automatisch ein vorhandenes und wählt   unterstützt Gerät, um die Operationen im Falle der angegebenen zu laufen   existiert nicht, Sie können allow_soft_placement auf True setzen   Konfigurationsoption beim Erstellen der Sitzung.

Was Ihnen hilft, wenn Sie versehentlich das falsche Gerät oder ein Gerät, das einen bestimmten OP nicht unterstützt, manuell angegeben haben. Dies ist nützlich, wenn Sie einen Code schreiben, der in Umgebungen ausgeführt werden kann, die Sie nicht kennen. Sie können immer noch nützliche Standardwerte bereitstellen, aber im Fehlerfall ist dies ein gutes Fallback.

    
Salvador Dali 02.07.2017 21:19
quelle

Tags und Links