tensorflow에서 목록의 중간 값을 어떻게 계산합니까? Tensorflow 중간 값
node = tf.median(X)
처럼 X는 NumPy와에서 자리
, 내가 직접 중간 값을 얻기 위해 np.median 사용할 수 있습니다. tensorflow에서 numpy 연산을 어떻게 사용할 수 있습니까?
tensorflow에서 목록의 중간 값을 어떻게 계산합니까? Tensorflow 중간 값
node = tf.median(X)
처럼 X는 NumPy와에서 자리
numpy 함수를 사용할 필요가 없습니다.
def get_median(v):
v = tf.reshape(v, [-1])
m = v.get_shape()[0]//2
return tf.nn.top_k(v, m).values[m-1]
X가 이미 벡터 인 경우 재 형성을 건너 뛸 수 있습니다.
TF에는 현재 no median function이 있습니다. TF에서 numpy 연산을 사용하는 유일한 방법은 그래프를 실행 한 후입니다.
import tensorflow as tf
import numpy as np
a = tf.random_uniform(shape=(5, 5))
with tf.Session() as sess:
np_matrix = sess.run(a)
print np.median(np_matrix)
나는 numpy가 단점이 있다고 생각했다 : 그것은 텐서 계산이 아니기 때문에 CPU에서 실행되어야한다. 따라서 큰 ndarray의 경우 메모리가 많이 소모되어 성능이 저하 될 수 있습니다. –
tensorflow
으로 배열의 중앙값을 계산할 때는 quantile
함수를 사용할 수 있습니다. 이는 50 % quantile이 median
이기 때문입니다.
import tensorflow as tf
import numpy as np
np.random.seed(0)
x = np.random.normal(3.0, .1, 100)
median = tf.contrib.distributions.percentile(x, 50.0)
tf.Session().run(median)
이 코드 않았습니다 interpolation
파라미터 lower
, higher
또는 nearest
샘플 값으로 결과를 근사 np.median
때문에 동일한 동작. 당신 같은 당신이 사용할 수있는 행동을하려는 경우
: 그 외에
median = tf.contrib.distributions.percentile(x, 50.0, interpolation='lower')
median += tf.contrib.distributions.percentile(x, 50.0, interpolation='higher')
median /= 2.
tf.Session().run(median)
을 위의 코드는 np.percentile(x, 50, interpolation='midpoint')
에 해당합니다.
도움 주셔서 감사합니다. 정의 된 X는 입력 데이터의 크기가 알려지지 않았기 때문에 [None, 5] 행렬입니다. 이 문제를 어떻게 알 수 있습니까? –
@ YingchaoXiong 총 행렬 또는 치수 중 하나의 중간 값을 계산 하시겠습니까? – BlueSun
치수를 따르십시오. 나는이 문제를 알아 냈다. 새로운 문제는 행렬의 크기 또는 함수에서 m 값을 정의하는 방법입니다. 자리 표시 자의 크기는 [없음, 5]입니다. 트레이닝 파트에서는 배치 크기를 10 ([10,5])으로 설정하고 크기는 [1,5]로 설정합니다. 피드 크기에 따라 m 값을 어떻게 변경할 수 있습니까? 정말 고맙습니다!!! –