2017-12-12 7 views
0

テンソルフローのKMeansClusteringにあらかじめ定義されたinital_centersを使用しようとしました。ValueError for tf.contrib.learn.KMeansClustering(定義済みのinital_clustersを使用)

/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、INIT = INIT)" と非常に簡単です)テンソル流のKmeansの初期中心?

答えて

0

tensorflow

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

から、あなたが

use_mini_batch=False

を設定する必要が何らかの理由で期待通り numpy配列が同じデータ型 float32を使用していることを確認してください
関連する問題