我正在尝试在卷积网络上实现自定义参数更新,但是执行的每个迷你批处理都会变慢。
我意识到没有必要以固定的学习率遇到这种麻烦,但是我计划以后更新。
我以feed_dict为mini_batch的循环中称此为此。
sess.run(layered_optimizer(cost,.1,1),feed_dict = feed_dict)
其中
def layered_optimizer(cost,base_rate, rate_multiplier):
gradients = tf.gradients(cost, [*weights, *biases])
print(gradients)
#update parameters based on gradients: var = var - gradient * base_rate * multiplier
for i in range(len(weights)-1):
weights[i].assign(tf.subtract(weights[i], tf.multiply(gradients[i], base_rate * rate_multiplier)))
biases[i].assign(tf.subtract(biases[i], tf.multiply(gradients[len(weights)+i], base_rate * rate_multiplier)))
return(cost)
我不确定这是否与问题有关,但是在尝试第二次运行代码后,我会收到以下错误并必须重新启动。
无法创建cudnn句柄:cudnn_status_not_initialized错误检索驱动程序版本:未完成:内核报告未在Windows上实现的驱动程序版本无法销毁cudnn句柄:cudnn_status_bad_param检查失败:stream-> parent() -> getConvolvealgorithm(conv_parameters.shouldincludewinogradnonfusealgo(),&算法)
发生的事情是每次被称为
渐变= tf.gradients(成本,[ *strige, *偏见])
tf。创建级别的新实例,占据不必要的内存。