tensorflow에 매우 이상한 문제가 있습니다. 내 질문을 다음 버전으로 단순화했습니다.
나는 단지 텐서 플로우 언어로 간단한 행렬 곱셈을 작성한 다음이 행렬 곱셈을 "for 루프"에 넣었습니다 (물론 다른 복잡한 함수를 for 루프에 넣을 수 있습니다. 결론은 동일합니다).
10000 번의 반복 횟수를 설정하고 각 루프에서 소비되는 시간을 인쇄하면 시간 소비가 점차 증가하는 것을 볼 수 있습니다. (각 루프의 시간이 동일해야하지만 그렇지 않았습니다.)
import tensorflow as tf
import numpy as np
import datetime
graph=tf.Graph()
with graph.as_default():
with tf.device("/gpu:0"):
a=np.arange(10).reshape(1,-1)
b=np.arange(100).reshape(10,10)
A = tf.placeholder(tf.float32, [1,10])
B = tf.placeholder(tf.float32, [10,10])
sess = tf.InteractiveSession()
for step in range(10000):
starttime = datetime.datetime.now()
RESULT = tf.matmul(A,B)
RESULT=sess.run(RESULT,feed_dict={A: a, B: b})
endtime = datetime.datetime.now()
print(endtime-starttime)
처음에 프로그램은 다음 결과를 인쇄합니다.
0:00:00.003058
0:00:00.003216
0:00:00.003195
0:00:00.003213
0:00:00.003653
0:00:00.003599
0:00:00.003297
0:00:00.003172
0:00:00.003235
0:00:00.004374
0:00:00.003442
0:00:00.003387
0:00:00.003290
몇 초 후, 나는 이것을 얻었다 :
0:00:00.011470
0:00:00.013232
0:00:00.013088
0:00:00.015906
0:00:00.012659
0:00:00.012914
0:00:00.012562
0:00:00.011941
0:00:00.013575
0:00:00.012251
0:00:00.013759
0:00:00.012534
0:00:00.011859
...
0:00:00.031062
0:00:00.031676
0:00:00.031388
0:00:00.031349
0:00:00.032476
0:00:00.031337
0:00:00.031147
0:00:00.031121
0:00:00.030795
0:00:00.031143
0:00:00.031277
0:00:00.031015
0:00:00.034139
0:00:00.032749
계산이 느려지고 있음을 의미합니다. 아무도 이유를 말해 줄 수 있습니까? 매우 감사합니다.
루프를 통과 할 때마다 새 작업을 생성합니다. (tf.matmul)
따라서 tensorflow 그래프가 통제 불능 상태가되고 있습니다.
tensorflow에서는 작업을 한 번 생성 한 다음 (예 : tf.matmul (A, B)), sess.run을 사용하여이 작업을 여러 번 실행합니다 (예 : sess.run (RESULT, feed_dict = {A : ai, B : bi}.
오퍼레이션을 생성하는 것은 함수를 작성하거나 처리 장치를 생성하는 것과 같으며, 한 번만 생성하면 여러 입력에 사용할 수 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다