>

while_loop를 사용하여 반복적으로 행렬을 업데이트하고 있습니다. 루프는 밀도가 높은 텐서에서 잘 실행되지만 스파 스 텐서를 사용하면 다음 오류가 발생합니다.

와이즈 비즈 두 버전 사이에서 변경하는 유일한 것은 HH를 HH = tf.contrib.layers.dense_to_sparse (HH)로 변환하고 tf.sparse_tensor_dense_matmul (HH, f)를 tf.matmul (HH, f) 대신 사용하는 것입니다. -아래 주석이 달린 코드에 표시됩니다.

InvalidArgumentError: Number of rows of a_indices does not match number of entries in a_values [[Node: while/SparseTensorDenseMatMul/SparseTensorDenseMatMul = SparseTensorDenseMatMul[T=DT_FLOAT, Tindices=DT_INT64, adjoint_a=false, adjoint_b=false, _device="/job:localhost/replica:0/task:0/device:GPU:0"](while/SparseTensorDenseMatMul/SparseTensorDenseMatMul/Enter, while/SparseTensorDenseMatMul/SparseTensorDenseMatMul/Enter_1, ConstantFolding/dense_to_sparse/Shape_enter/_1, while/Switch_1:1)]]
[[Node: while/Exit_1/_5 = _Recvclient_terminated=false, recv_device="/job:localhost/replica:0/task:0/device:CPU:0", send_device="/job:localhost/replica:0/task:0/device:GPU:0", send_device_incarnation=1, tensor_name="edge_62_while/Exit_1", tensor_type=DT_FLOAT, _device="/job:localhost/replica:0/task:0/device:CPU:0"]]

이 코드는 H, g 및 f가 충분히 작 으면 작동합니다. 예를 들어,이 오류는 H.shape = (8000,3840), g.shape = (8000,1), f.shape = (3840,1) 이상에서 발생하지만 H.shape = (8000, 3584), g.shape = (8000,1), f.shape = (3584,1) 이하 희미한 텐서가 모양을 유지하기 위해 while 루프에서 특별한 작업을 수행해야합니까?

with tf.device('/gpu:0'): g=tf.constant(g,shape=[np.size(g),1],dtype=tf.float32) H=tf.constant(H,dtype=tf.float32); Ht=tf.transpose(H) HH=tf.matmul(Ht,H) #HH=tf.contrib.layers.dense_to_sparse(HH) a=tf.matmul(Ht,g) i=tf.constant(0,dtype=tf.int32) f=tf.constant(f,dtype=tf.float32) body = lambda i,f:(tf.add(i,1),tf.divide(tf.multiply(f,a),tf.matmul(HH,f)+10e-9)) #body = lambda i,f:(tf.add(i,1),tf.divide(tf.multiply(f,a),tf.sparse_tensor_dense_matmul(HH,f)+10e-9)) cond= lambda i,f:tf.less(i,iterations) i,f=tf.while_loop(cond,body,(i,f)) sess=tf.Session() i,f=sess.run([i,f])

  • 답변 # 1

    tensorflow 1.8에서 1.12로 업데이트를 시도했지만 tensorflow가 완전히 작동하지 않았습니다 (ts. 세션이 무기한 중단됩니다). 그래서 나는 아나콘다 환경을 숨기고 tensorflow 1.12로 처음부터 시작했습니다. 이 업데이트/다시 설치 후 스파 스 텐서 관련 문제는 사라졌지 만 문제가 아나콘다 환경의 텐서 플로 버전이나 다른 문제인지는 확실하지 않습니다.

  • 이전 excel - 평균 이상의 2SD 이상인 경우 값을 제외합니다
  • 다음 bash - SED를 사용하여 HTML 문서의 내부 링크를 수정 하시겠습니까?