赞
踩
最近在学python中发现,在类中声明为静态函数的函数在类内调用时可以不用跟上参数
例如这一段的self.msr_error函数声明为静态,compute_cost中调用此函数时不必声明参数,直接用self.msr_error就能调用
def compute_cost(self): #losses = tf.losses.mean_squared_error(labels=self.ys, predictions=self.pred) #求出的是每一步的loss tf.reshape(self.pred,[-1,1]) tf.reshape(self.ys,[-1,1]) losses = tf.contrib.legacy_seq2seq.sequence_loss_by_example( [tf.reshape(self.pred, [-1], name='reshape_pred')], [tf.reshape(self.ys, [-1], name='reshape_target')], [tf.ones([self.batch_size * self.n_steps], dtype=tf.float32)], average_across_timesteps=True, softmax_loss_function=self.msr_error, name='losses' ) # 计算batch_size内的平均的loss的值 with tf.name_scope('average_cost'): self.cost = tf.div( tf.reduce_sum(losses, name='losses_num'), tf.cast(self.batch_size, tf.float32), name='average_cost') tf.summary.scalar('cost', self.cost) @staticmethod def msr_error(labels, logits): return tf.square(tf.subtract(labels, logits))
赞
踩
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。