Ta strona została przetłumaczona przez Cloud Translation API.
Switch to English

tf.DeviceSpec

TensorFlow 1 wersja Zobacz źródło na GitHub

Oznacza grupę (ewentualnie częściowe) specyfikacji urządzenia TensorFlow.

DeviceSpec s są używane w całym TensorFlow opisać stan, w którym są przechowywane i występują obliczenia. Korzystanie DeviceSpec pozwala analizować ciągi urządzeniu Spec celu weryfikacji ich ważności, lub połączyć je komponować je programowo.

Przykład:

 # Place the operations on device "GPU:0" in the "ps" job.
device_spec = DeviceSpec(job="ps", device_type="GPU", device_index=0)
with tf.device(device_spec.to_string()):
  # Both my_var and squared_var will be placed on /job:ps/device:GPU:0.
  my_var = tf.Variable(..., name="my_variable")
  squared_var = tf.square(my_var)
 

Z upragnieniem wykonanie wyłączone (domyślnie w TensorFlow 1.x i wywołując disable_eager_execution () w TensorFlow 2.x), następującą składnię można stosować:

 tf.compat.v1.disable_eager_execution()

# Same as previous
device_spec = DeviceSpec(job="ps", device_type="GPU", device_index=0)
# No need of .to_string() method.
with tf.device(device_spec):
  my_var = tf.Variable(..., name="my_variable")
  squared_var = tf.square(my_var)
 ```

If a `DeviceSpec` is partially specified, it will be merged with other
`DeviceSpec`s according to the scope in which it is defined. `DeviceSpec`
components defined in inner scopes take precedence over those defined in
outer scopes.

```python
gpu0_spec = DeviceSpec(job="ps", device_type="GPU", device_index=0)
with tf.device(DeviceSpec(job="train").to_string()):
  with tf.device(gpu0_spec.to_string()):
    # Nodes created here will be assigned to /job:ps/device:GPU:0.
  with tf.device(DeviceSpec(device_type="GPU", device_index=1).to_string()):
    # Nodes created here will be assigned to /job:train/device:GPU:1.
 

DeviceSpec składa się z 5 części - z których każdy jest ewentualnie wymienić:

  • Zadanie: Nazwa zadania.
  • Replika: Indeks replika.
  • Zadanie: Indeks zadanie.
  • typ urządzenia: Łańcuch rodzaj urządzenia (np „procesor” i „graficzny”).
  • Indeks urządzenia: Indeks urządzenia.

job strunowy. Opcjonalna nazwa zadania.
replica int. Opcjonalny wskaźnik replika.
task int. Opcjonalny wskaźnik zadaniem.
device_type Opcjonalnie urządzenie typu string (np „CPU” lub „GPU”)
device_index int. Opcjonalny wskaźnik urządzenie. Jeśli pozostanie nieokreślony, urządzenie reprezentuje „any” device_index.

device_index

device_type

job

replica

task

metody

from_string

Pokaż źródło

Skonstruować DeviceSpec z ciągiem.

args
spec ciąg formularza / zadania: /replika: /zadanie: / Urządzenia: Procesor: lub / praca: /replika: /zadanie: / Urządzenia: Grafika: jak CPU i GPU są wzajemnie się wykluczają. Wszystkie wpisy są nieobowiązkowe.

Zwroty
DeviceSpec.

make_merged_spec

Pokaż źródło

Zwraca nowy DeviceSpec który zawiera dev .

Przy łączeniu specyfikacje, dev będą miały pierwszeństwo przed bieżącym spec. Tak na przykład:

 first_spec = tf.DeviceSpec(job=0, device_type="CPU")
second_spec = tf.DeviceSpec(device_type="GPU")
combined_spec = first_spec.make_merged_spec(second_spec)
 

jest równa:

 combined_spec = tf.DeviceSpec(job=0, device_type="GPU")
 

args
dev DeviceSpec

Zwroty
Nowa DeviceSpec który łączy w self i dev

parse_from_string

Pokaż źródło

Przetwarza DeviceSpec imię na jego składniki.

2.x zmiana zachowania: W TensorFlow 1.x, to mutuje funkcyjne własnego państwa i sam wraca. W 2.x DeviceSpecs są niezmienne, a to funkcja zwraca DeviceSpec zawierający spec.

Zalecana:

 # my_spec and my_updated_spec are unrelated.
my_spec = tf.DeviceSpec.from_string("/CPU:0")
my_updated_spec = tf.DeviceSpec.from_string("/GPU:0")
with tf.device(my_updated_spec):
  ...
 

Będzie działać w 1.x oraz 2.x (chociaż przestarzałe w 2.x):

 my_spec = tf.DeviceSpec.from_string("/CPU:0")
my_updated_spec = my_spec.parse_from_string("/GPU:0")
with tf.device(my_updated_spec):
  ...
 

Nie będzie działać w 2.x:

 my_spec = tf.DeviceSpec.from_string("/CPU:0")
my_spec.parse_from_string("/GPU:0")  # <== Will not update my_spec
with tf.device(my_spec):
  ...
 

Na ogół, DeviceSpec.from_string powinna całkowicie zastąpić DeviceSpec.parse_from_string i DeviceSpec.replace powinna całkowicie zastąpić bezpośrednio atrybuty określające.

args
spec opcjonalny ciąg formularza / zadania: /replika: /zadanie: / Urządzenia: Procesor: lub / praca: /replika: /zadanie: / Urządzenia: Grafika: jak CPU i GPU są wzajemnie się wykluczają. Wszystkie wpisy są nieobowiązkowe.

Zwroty
DeviceSpec .

podbicia
ValueError jeśli spec nie była ważna.

replace

Pokaż źródło

Metoda wygoda dokonywania nowej DeviceSpec polami nadrzędnych.

Na przykład:

 my_spec = DeviceSpec=(job="my_job", device="CPU")
my_updated_spec = my_spec.replace(device="GPU")
my_other_spec = my_spec.replace(device=None)
 

args
**kwargs Metoda ta ma takie same argumenty jak konstruktor DeviceSpec

Zwroty
DeviceSpec z dziedzin określonych w kwargs nadpisane.

to_string

Pokaż źródło

Zwraca ciąg znaków reprezentujący DeviceSpec .

Zwroty
ciąg formularza / zadania: /replika: /zadanie: /urządzenie: : ,

__eq__

Pokaż źródło

Sprawdza czy other DeviceSpec jest taka sama jak w bieżącej instancji, np Have

samą wartość dla wszystkich pól wewnętrznych.

args
other Innym DeviceSpec

Zwroty
Return True , jeśli other jest również wystąpienie DeviceSpec i ma taką samą wartość jak bieżącej instancji. Powrót False inaczej.