tf.control_dependencies (tensorflow v1)를 사용한 예기치 않은 (무작위) 실행 순서

사용자 5915898

다음 코드 (tf v1.12.0)를 실행하면 6.0 (x-> mul-> ident), 7.0 (x-> mul-> add-> ident) 또는 9.0 (x-> add-> mul -> ident).

누군가 ops의 실행 순서가 tf.control_dependencies에 의해 제어되지 않는 이유를 설명해 주시겠습니까? 나는 적어도 add_op이 컨트롤 컨텍스트 내의 어떤 것도 고려되기 전에 실행될 것이라고 생각합니다.

tf.reset_default_graph()

x=tf.Variable(2.0)
add_op = tf.assign_add(x, 1)
mul_op = tf.assign(x, 3*x)

with tf.control_dependencies([add_op]):
    out_op = tf.identity(mul_op)

init_op = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init_op)
    print(sess.run([out_op]))

감사!

재커리 개렛

mul_op의존하지 않기 때문 입니다 add_op. 오히려는 (명시 적 입력으로) 및 제어 종속성 으로 out_op모두 의존합니다. TensorFlow 1.x (및 컨텍스트 내 TensorFlow 2.x ) 에서 Python 의 작업 순서 는 TensorFlow 런타임 의 작업 순서에 영향을주지 않습니다 .mul_opadd_optf.Graph

위의 예에서 결정적 동작을 강제하기 위해 몇 가지 옵션이 있습니다.

  1. 다음을 사용하여 컨텍스트 mul_op내부 tf.control_dependencies를 구성하십시오 add_op.
add_op = tf.assign_add(x, 1)
with tf.control_dependencies([add_op]):
  mul_op = tf.assign(x, 3 * x)
  1. 유무 mul_op첨가 (출력 받아 add_op입력 등 참조).
add_op = tf.assign_add(x, 1)
mul_op = tf.assign(x, 3 * add_op)
  1. 에 신원 영업 이익과 통화 sess.run (에서 제어 의존성)를 제거 out_op하고 add_op명시 적으로.
x=tf.Variable(2.0)
add_op = tf.assign_add(x, 1)
mul_op = tf.assign(x, 3*x)
out_op = tf.identity(mul_op)
init_op = tf.global_variables_initializer()
with tf.Session() as sess:
    sess.run(init_op)
    sess.run(add_op)
    print(sess.run(out_op))

이들은 항상을 반환 9.0합니다.

정말 깊이 파고 들어 그래프의 종속성이 무엇인지 확인 하려면 다음을 시도해 볼 수 있습니다.

tf.get_default_graph().as_graph_def()

input그래프의 각 노드에 대한 값이 무엇인지 확인하십시오 .

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Tensorflow 2.0`tf.multiply` 메서드가 예기치 않은 결과를 제공함

분류에서Dev

Tensorflow control_dependencies가 목록과 함께 작동하지 않습니다.

분류에서Dev

fakeAsync (), NgModel 및 detectChanges ()를 사용한 테스트에서 예기치 않은 동작

분류에서Dev

클래스에서 __add__를 사용한 예기치 않은 Python 동작

분류에서Dev

ksh에서 -i 옵션 (파일에서 SQL 읽기)을 사용하여 sqlcmd를 실행 한 후 파일 설명자 및 / 또는 I / O 스트림의 예기치 않은 동작이 무한 루프를 생성 함

분류에서Dev

후순위 순회 재귀를 사용한 Depth First 검색으로 예기치 않은 출력이 생성됨

분류에서Dev

`npm test`로 mocha를 실행할 때 예기치 않은 동작

분류에서Dev

bazel을 사용하지 않고 TensorFlow 서빙 예제 mnist_export를 실행하는 방법은 무엇입니까?

분류에서Dev

Tensorflow 2.2에서 SparseCategoricalCrossEntropy 손실과 함께 tf.metrics.MeanIoU ()를 사용할 때 크기 불일치 오류

분류에서Dev

bcrypt를 사용하는 긴 키에서 예기치 않은 동작

분류에서Dev

쌍의`std :: vector`에서`std :: count`를 사용하는 예기치 않은 동작

분류에서Dev

"is"연산자를 사용하는 Python에서 예기치 않은 동작

분류에서Dev

tensorflow에서 x와 y가 다른 모양을 가진 x에서 행을 선택하기 위해 y에서 tf.where ()를 사용하는 방법은 무엇입니까?

분류에서Dev

자바 스크립트에서 예기치 않은 실행 순서

분류에서Dev

ListView에 대한 JSON 실행에서 예기치 않은 오류 발생

분류에서Dev

JavaScript를 사용하여 위치 1의 JSON에서 예기치 않은 토큰 o를 수정하는 방법은 무엇입니까?

분류에서Dev

.js 파일에서 IIFE를 실행하는 동안 예기치 않은 출력

분류에서Dev

Bash 스크립트의 예기치 않은 동작 : 먼저 함수를 실행 한 후 별칭을 실행합니다.

분류에서Dev

Bash 스크립트의 예기치 않은 동작 : 먼저 함수를 실행 한 후 별칭을 실행합니다.

분류에서Dev

javascript : 삼항 연산자를 사용한 예기치 않은 평가 동작

분류에서Dev

예상치 못한 IIFE 실행 순서

분류에서Dev

작업을 순서대로 실행하기위한 AJAX 전략

분류에서Dev

tf.RaggedTensor를 사용하지 않고 tensorflow의 텐서에서 특정 행 제거

분류에서Dev

tf.GradientTape ()를 사용하여 Tensorflow에서 한 번에 여러 레이어의 손실 및 계산 기울기를 계산합니다.

분류에서Dev

sizeof 연산자를 사용할 때 예기치 않은 동작

분류에서Dev

Threads. @ threads를 사용하는 예기치 않은 동작?

분류에서Dev

구문 오류, 사용자 지정 레이크 작업을 실행할 때 예기치 않은 tLABEL

분류에서Dev

VueJS 단일 페이지를 사용한 Django 라우팅은 URL에 후행 슬래시가없는 경우 예기치 않은 동작이 발생합니다.

분류에서Dev

Tensorflow 2에서 tf.GradientTape를 사용한 훈련이 fit API를 사용한 훈련과 다른 동작을하는 이유는 무엇입니까?

Related 관련 기사

  1. 1

    Tensorflow 2.0`tf.multiply` 메서드가 예기치 않은 결과를 제공함

  2. 2

    Tensorflow control_dependencies가 목록과 함께 작동하지 않습니다.

  3. 3

    fakeAsync (), NgModel 및 detectChanges ()를 사용한 테스트에서 예기치 않은 동작

  4. 4

    클래스에서 __add__를 사용한 예기치 않은 Python 동작

  5. 5

    ksh에서 -i 옵션 (파일에서 SQL 읽기)을 사용하여 sqlcmd를 실행 한 후 파일 설명자 및 / 또는 I / O 스트림의 예기치 않은 동작이 무한 루프를 생성 함

  6. 6

    후순위 순회 재귀를 사용한 Depth First 검색으로 예기치 않은 출력이 생성됨

  7. 7

    `npm test`로 mocha를 실행할 때 예기치 않은 동작

  8. 8

    bazel을 사용하지 않고 TensorFlow 서빙 예제 mnist_export를 실행하는 방법은 무엇입니까?

  9. 9

    Tensorflow 2.2에서 SparseCategoricalCrossEntropy 손실과 함께 tf.metrics.MeanIoU ()를 사용할 때 크기 불일치 오류

  10. 10

    bcrypt를 사용하는 긴 키에서 예기치 않은 동작

  11. 11

    쌍의`std :: vector`에서`std :: count`를 사용하는 예기치 않은 동작

  12. 12

    "is"연산자를 사용하는 Python에서 예기치 않은 동작

  13. 13

    tensorflow에서 x와 y가 다른 모양을 가진 x에서 행을 선택하기 위해 y에서 tf.where ()를 사용하는 방법은 무엇입니까?

  14. 14

    자바 스크립트에서 예기치 않은 실행 순서

  15. 15

    ListView에 대한 JSON 실행에서 예기치 않은 오류 발생

  16. 16

    JavaScript를 사용하여 위치 1의 JSON에서 예기치 않은 토큰 o를 수정하는 방법은 무엇입니까?

  17. 17

    .js 파일에서 IIFE를 실행하는 동안 예기치 않은 출력

  18. 18

    Bash 스크립트의 예기치 않은 동작 : 먼저 함수를 실행 한 후 별칭을 실행합니다.

  19. 19

    Bash 스크립트의 예기치 않은 동작 : 먼저 함수를 실행 한 후 별칭을 실행합니다.

  20. 20

    javascript : 삼항 연산자를 사용한 예기치 않은 평가 동작

  21. 21

    예상치 못한 IIFE 실행 순서

  22. 22

    작업을 순서대로 실행하기위한 AJAX 전략

  23. 23

    tf.RaggedTensor를 사용하지 않고 tensorflow의 텐서에서 특정 행 제거

  24. 24

    tf.GradientTape ()를 사용하여 Tensorflow에서 한 번에 여러 레이어의 손실 및 계산 기울기를 계산합니다.

  25. 25

    sizeof 연산자를 사용할 때 예기치 않은 동작

  26. 26

    Threads. @ threads를 사용하는 예기치 않은 동작?

  27. 27

    구문 오류, 사용자 지정 레이크 작업을 실행할 때 예기치 않은 tLABEL

  28. 28

    VueJS 단일 페이지를 사용한 Django 라우팅은 URL에 후행 슬래시가없는 경우 예기치 않은 동작이 발생합니다.

  29. 29

    Tensorflow 2에서 tf.GradientTape를 사용한 훈련이 fit API를 사용한 훈련과 다른 동작을하는 이유는 무엇입니까?

뜨겁다태그

보관