博主在使用tensorflow进行深度学习编程的时候经常会遇到一些常见的问题,特此在这里将自己遇到的问题与解决方法进行汇总。
1、tensor张量维度扩展(试图把shape为[64,10]的张量扩展为[64,128,10]的张量)
n = tf.expand_dims(m,axis=1) #m为shape为[64,10]的tensor
#经过tf.expand_dims扩展后的shape为[64,1,10],axis控制增加哪一维度
mn = tf.tile(n,[1,128,1]) #128表示在第二维复制的次数,可以在不同的维度上根据自己的需要进行复制
#经过tf.tile扩展后的shape为[64,128,10]
2、使用梯度裁剪时,由于存在梯度不存在为None,如果使用tf.clip_by_value()时会出现错误:ValueError: None values not supported。
在这里的处理技巧是对梯度不存在为None时不做任何处理,即可避免这个问题。感谢https://stackoverrun.com/cn/q/10826383提供的解决方法,很受用。
opt_func = tf.train.AdamOptimizer(learning_rate=self.config.lr)
gvs = opt_func.compute_gradients(self.loss)
def ClipIfNotNone(grad):
if grad is not None:
r