【发布时间】:2018-11-28 08:27:08
【问题描述】:
尊敬的 TensorFlow 社区,
我正在使用tf.contrib.factorization.KMeansClustering 训练分类器,
但训练进行得很慢,而且只使用了我的 GPU 的 1%。
但是,我的 4 个 CPU 内核的使用率持续达到约 35%。
K-Means 是为 CPU 编写的而不是为 GPU 编写的吗?
有没有办法可以将更多的计算转移到 GPU 上,或者一些 其他加快训练速度的方法?
下面是我的训练脚本(Python3)。
感谢您的宝贵时间。
import tensorflow as tf
def parser(record):
features={
'feats': tf.FixedLenFeature([], tf.string),
}
parsed = tf.parse_single_example(record, features)
feats = tf.convert_to_tensor(tf.decode_raw(parsed['feats'], tf.float64))
return {'feats': feats}
def my_input_fn(tfrecords_path):
dataset = (
tf.data.TFRecordDataset(tfrecords_path)
.map(parser)
.batch(1024)
)
iterator = dataset.make_one_shot_iterator()
batch_feats = iterator.get_next()
return batch_feats
### SPEC FUNCTIONS ###
train_spec_kmeans = tf.estimator.TrainSpec(input_fn = lambda: my_input_fn('/home/ubuntu/train.tfrecords') , max_steps=10000)
eval_spec_kmeans = tf.estimator.EvalSpec(input_fn = lambda: my_input_fn('/home/ubuntu/eval.tfrecords') )
### INIT ESTIMATOR ###
KMeansEstimator = tf.contrib.factorization.KMeansClustering(
num_clusters=500,
feature_columns = [tf.feature_column.numeric_column(
key='feats',
dtype=tf.float64,
shape=(377,),
)],
use_mini_batch=True)
### TRAIN & EVAL ###
tf.estimator.train_and_evaluate(KMeansEstimator, train_spec_kmeans, eval_spec_kmeans)
最好, 乔什
【问题讨论】:
-
将所有
tf.float64更改为tf.float32看看是否有帮助。 -
如果我转到
tf.float32,我会看到很多NaNs:(
标签: python-3.x tensorflow k-means