【发布时间】:2019-11-24 16:06:35
【问题描述】:
我正在尝试使用 Tiny YOLO v2 的代码库。我在声明学习率计划时遇到了以下错误。我可以看到我的step 值与我的lr 大小相同,但我不确定有什么好的修复方法。我已经尝试明确声明这些值(steps 小于 lr)以及导致的错误。
错误:
Traceback(最近一次调用最后一次): 文件“scripts/train_tiny_yolo.py”,第 335 行,在 lr = tf.train.piecewise_constant(global_step, 步数, lrs) 文件“/Users/nivedithakalavakonda/Desktop/python_environments/objectdet_tf1/lib/python3.6/site-packages/tensorflow/python/training/learning_rate_decay.py”,第 147 行,在 piecewise_constant 名称=名称) 文件“/Users/nivedithakalavakonda/Desktop/python_environments/objectdet_tf1/lib/python3.6/site-packages/tensorflow/python/training/learning_rate_decay_v2.py”,第 166 行,在 piecewise_constant “边界的长度应该比值的长度小 1”) ValueError: 边界的长度应该比值的长度小 1
这是我的代码中的相关部分:
base_lr = params.get('learning_rate', 1e-3)
steps = params.get('steps', [3000, 4000, 5000])
steps_and_lrs = []
if steps[0] > 100:
# Warm-up
steps_and_lrs += [
(25, base_lr / 100),
(50, base_lr / 10)
]
steps_and_lrs += [(step, base_lr * 10**(-i)) for i, step in enumerate(steps)]
steps, lrs = zip(*steps_and_lrs)
# Alternative attempt to explicitly declare lr and steps values
# steps =( 50, 20000, 30000, 40000)
# lrs = (1e-05, 0.0001, 0.001, 0.0001, 1e-05)
max_iter = steps[-1]
lr = tf.train.piecewise_constant(global_step, steps, lrs)
np.set_printoptions(precision=3, suppress=True)
opt = tf.train.MomentumOptimizer(lr, momentum=0.9)
grads_and_vars = opt.compute_gradients(loss)
clip_value = params.get('clip_gradients')
if clip_value is not None:
grads_and_vars = [(tf.clip_by_value(g, -clip_value, clip_value), v) for g, v in grads_and_vars]
train_op = opt.apply_gradients(grads_and_vars,
global_step=global_step)
merged = tf.summary.merge_all()
我尝试了什么:
当我明确给出 steps 和 lr 的值时,我得到以下值错误:
Traceback(最近一次调用最后一次):文件 “脚本/train_tiny_yolo.py”,第 363 行,在 grads_and_vars = [(tf.clip_by_value(g, -clip_value, clip_value), v) for g, v in grads_and_vars] 文件 "scripts/train_tiny_yolo.py", 第 363 行,在 grads_and_vars = [(tf.clip_by_value(g, -clip_value, clip_value), v) for g, v in grads_and_vars] 文件 “/Users/nivedithakalavakonda/Desktop/python_environments/objectdet_tf1/lib/python3.6/site-packages/tensorflow/python/util/dispatch.py”, 第 180 行,在包装中 返回目标(*args,**kwargs)文件“/Users/nivedithakalavakonda/Desktop/python_environments/objectdet_tf1/lib/python3.6/site-packages/tensorflow/python/ops/clip_ops.py”, 第 69 行,在 clip_by_value 中 t = ops.convert_to_tensor(t, name="t") 文件“/Users/nivedithakalavakonda/Desktop/python_environments/objectdet_tf1/lib/python3.6/site-packages/tensorflow/python/framework/ops.py”, 第 1039 行,在 convert_to_tensor 中 返回 convert_to_tensor_v2(值,dtype,preferred_dtype,名称)文件 “/Users/nivedithakalavakonda/Desktop/python_environments/objectdet_tf1/lib/python3.6/site-packages/tensorflow/python/framework/ops.py”, 第 1097 行,在 convert_to_tensor_v2 as_ref=False)文件“/Users/nivedithakalavakonda/Desktop/python_environments/objectdet_tf1/lib/python3.6/site-packages/tensorflow/python/framework/ops.py”, 第 1175 行,在 internal_convert_to_tensor 中 ret = conversion_func(值,dtype=dtype,name=name,as_ref=as_ref)文件 “/Users/nivedithakalavakonda/Desktop/python_environments/objectdet_tf1/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py”, 第 304 行,在 _constant_tensor_conversion_function 中 返回常量(v,dtype=dtype,name=name)文件“/Users/nivedithakalavakonda/Desktop/python_environments/objectdet_tf1/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py”, 第 245 行,保持不变 allow_broadcast=True)文件“/Users/nivedithakalavakonda/Desktop/python_environments/objectdet_tf1/lib/python3.6/site-packages/tensorflow/python/framework/constant_op.py”, 第 283 行,在 _constant_impl 中 allow_broadcast=allow_broadcast)) 文件“/Users/nivedithakalavakonda/Desktop/python_environments/objectdet_tf1/lib/python3.6/site-packages/tensorflow/python/framework/tensor_util.py”, 第 454 行,在 make_tensor_proto 中 raise ValueError("None values not supported.")
当前使用 TensorFlow 1.13.1。
感谢任何帮助。请让我知道分享大型代码库是否会更有洞察力。
【问题讨论】:
标签: python python-3.x tensorflow