tensorflow占用太多的cpu计算资源?

时间:2019-01-07 11:52:39

标签: tensorflow

我用张量流构建了RBF网络。网络很小,因此我认为没有任何复杂的计算要求。但是,当它与CPU一起运行时,它将占用大量CPU。由于某些原因,我需要并行进行RBFN培训,因此CPU占用对我来说似乎很糟糕。

下面是示例代码。我做了一个前馈并优化了权重和循环偏差。

class RBFN(object):
def __init__(self, input_dim, output_dim, hidden_num, sess=None):
    with tf.variable_scope('RBFN'):
        with tf.device('/cpu:0'):
            self.input_layer = tf.placeholder(tf.float32, [None, self.input_dim], name='input')
            self.target_layer = tf.placeholder(tf.float32, [None, self.output_dim], name='output')
            # hidden nodes
            self.hidden = tf.placeholder(tf.float32, [hidden_num, input_dim], name='hidden')
            self.center = None
            e_c = tf.expand_dims(self.hidden, 0)  # [1, hidden_num, input_dim]
            e_x = tf.expand_dims(self.input_layer, 1)  # [None, 1, self.input_dim]         
            self.hidden_layer = tf.exp(- self._delta * tf.reduce_sum(tf.square(tf.subtract(e_c, e_x)), 2))
            # output layer
            self.w = tf.Variable(tf.random_normal([hidden_num, output_dim], 0.0, 0.1, tf.float32))
            self.b = tf.Variable(tf.zeros(shape=[1, output_dim]))
            self.predict_layer = tf.matmul(self.hidden_layer, self.w) + self.b  # [None, output_dim]
            # loss
            self.loss = tf.reduce_mean(tf.square(self.predict_layer-self.target_layer))
            self.optimzer = tf.train.AdamOptimizer(1e-4)
            self.op = self.optimzer.minimize(self.loss)

def update(self, X, Y, X_test=None, Y_test=None):
    for i in range(self.max_iters):           
        _, loss = self.sess.run([self.op, self.loss],
                                feed_dict={self.input_layer: X, self.target_layer: Y,
                                           self.hidden: self.center})

在我的情况下,input_dim为14,output_dim为11,hidden_​​num为70。输入数据X的形状为[1500,14],Y为[1500,11]。 max_iters是10K。 CPU占用在这里。 please refer to this image

我使用的网络容量和数据都更大,但是那只占用很少的CPU。 我的张量流用法有什么问题吗?

0 个答案:

没有答案