2017-12-12 12 views
0

tensorflow의 KMeansClustering에 미리 정의 된 inital_centers를 사용하려고했습니다.미리 정의 된 inital_clusters를 사용하는 tf.contrib.learn.KMeansClustering의 ValueError

/lib/python3.5/site-packages/tensorflow/python/ops/variables.py in _init_from_args(self, initial_value, trainable, collections, validate_shape, caching_device, name, dtype, expected_shape, constraint) 
356   if not initial_value_shape.is_fully_defined(): 
357    raise ValueError("initial_value must have a shape specified: %s" % 
--> 358        self._initial_value) 
359 
360   # If 'initial_value' makes use of other variables, make sure we don't 

ValueError: initial_value must have a shape specified: Tensor("ones:0", shape=(?,), dtype=int64) 

그래서 미리 사용할 수있는 권리 방법은 무엇입니까 :

import tensorflow as tf 
import numpy as np 
K=5 
X = np.random.random((100,1)) 
m1 = min(X) 
m2 = max(X) 

init_c = np.linspace(m1[0], m2[0], num=K).reshape(-1,1) 
print(init_c) 

km = tf.contrib.learn.KMeansClustering(num_clusters=K, 
relative_tolerance=0.0001, initial_clusters =init_c) 

def train_input_fn(): 
    data = tf.constant(X, tf.float32) 
    return (data, None) 

km.fit(input_fn=train_input_fn) 

출력 오류가 (sklearn에서는 "초기화)이 초기화를 = KMeans (n_clusters = K"와 매우 간단합니다) tensorflow에서 Kmeans의 초기 중심?

답변

0

tensorflow

init_c = np.asarray(init_c, dtype=np.float32)

에서 당신이

use_mini_batch=False

을 설정해야 어떤 이유로 예상대로 numpy 배열이 동일한 데이터 유형 float32을 사용하는지 확인