2016-08-11 22 views
0

在RMSProp Optimizer tensorflow\python\training\rmsprop.py中,我試圖給算法引入隨機噪聲。在TensorFlow中運行random_ops,TypeError發生

所以我調用rnd = random_ops.random_normal()返回隨機值。但是,當我運行training_ops.apply_rms_prop(...., rnd, ...).opTypeError情況:

TypeError: Input 'rnd' of Op requires l-value input

然後回溯到tensorflow\python\framework\op_def_library.pyTypeError

if not all(x.is_ref_dtype for x in types):

raise TypeError(

"Input '%s' of '%s' Op requires l-value input" % (input_name, op_type_name))

我認爲這是因爲的random_ops.random_normal()輸出不是ApplyRMSProp Op 引用類型。所以我的問題是如何將其轉換爲引用DType?


注意,在tensorflow\python\training\rmsprop.py,參數被轉換到非基準D型

math_ops.cast(self._learning_rate_tensor, var.dtype.base_dtype)

所以也許我可以嘗試在tensorflow\python\framework\dtypes.pyas_ref功能,如

math_ops.cast(rnd, var.dtype.as_ref)

回答

0

random_ops.random_normal()返回一個張量,而不是training_ops.apply_rms_prop(...., rnd, ...).op需求Variable object。於是我進口變量OPS,通過

from tensorflow.python.ops import variables

和建設的Variable objectrnd。畢竟,它的工作。