Cómo utilizar la atenuación constante por partes en el programa de aprendizaje de tensorflow

tasa de aprendizaje

En el método de descenso de gradiente, se proporciona una tasa de aprendizaje unificada y todo el proceso de optimización se actualiza con un tamaño de paso determinado. En la etapa inicial de la optimización iterativa, si la tasa de aprendizaje es mayor, el tamaño del paso hacia adelante será más largo. luego, el descenso de gradiente se puede realizar a una velocidad más rápida y, en la etapa posterior de la optimización iterativa, reducir gradualmente el valor de la tasa de aprendizaje y reducir el tamaño del paso ayudará al algoritmo a converger y facilitará el acercamiento a la solución óptima. Por lo tanto, cómo actualizar la tasa de aprendizaje se ha convertido en el foco de atención de los investigadores.
En la optimización del modelo, varios métodos de caída de la tasa de aprendizaje comúnmente utilizados son: caída constante por partes, caída polinómica, caída exponencial, caída exponencial natural, caída del coseno, caída del coseno lineal y caída del coseno lineal de ruido.
Este artículo detalla la función de caída constante por partes y su uso.
Insertar descripción de la imagen aquí

tf.train.piecewise_constant(x,boundaries,values,name)
指定间隔的分段常数.

参数:
	x:0-D标量Tensor.
	boundaries:边界,tensor或list.
	values:指定定义区间的值.
	name:操作的名称,默认为PiecewiseConstant.

La atenuación constante por partes significa establecer diferentes valores constantes en el intervalo definido como el valor inicial de la tasa de aprendizaje y el valor de atenuación posterior.
Para el uso específico, aquí solo intercepto parte de mi código para ilustrar el uso de atenuación constante por partes.

# 指定学习率变化的轮数区间
boundaries=[300]
# 指定学习率变化值,注意,values要比boundaries多一个值
values=[1e-5,1e-6]
# 初始化global_step,并指明其为不可训练参数
global_step=tf.Variable(0,trainable=False)
# 学习率函数
learning_rate=tf.train.piecewise_constant(global_step, boundaries, values, name=None)
#优化器,注意加了global_step=global_step,用于同步变化
optimizer=tf.train.AdamOptimizer(learning_rate).minimize(model['loss'],global_step=global_step)

# 在运行时
_, step,loss,accuracy = sess.run([optimizer,global_step, 'loss'], 
						feed_dict={
    
    'x': input_data,'labels': labels})

¿Has fracasado en tus estudios?

Supongo que te gusta

Origin blog.csdn.net/qq_44846512/article/details/111991033
Recomendado
Clasificación