试图为基本Tensorflow RNN模型建立自定义损失函数

时间:2019-08-01 17:36:34

标签: python tensorflow machine-learning deep-learning

我试图制作一个RNN来生成代码,但是要注意的是,我希望它将代码写入python文件并获取输出。最后,如果输出满足某些条件,则可以通过。例如,如果列表的长度小于50,则可以通过。我尝试为此创建一个自定义损失函数,但遇到一个错误,我无法解决问题。

好吧,我在常规的python函数中迷失了:

def loss_func(generated):
    # Write to python file.
    # Get the output of that file.
    # Check if output meets conditions.
    # If so...
        return 1.0
    else:
        return 0.0

我还创建了一个函数,用于将字符串编码为数字,并为其解码提供一个数字。

然后我加载我的数据,对其进行编码,定义了诸如num_inputsnum_time_steps之类的东西,为X创建了一个占位符,并制作了一个基本的LSTM单元格输出投影包装中的单元格。

那之后,该是我的损失函数了。

encoder_loss = tf.reduce_mean(loss_func(to_string(enc_outputs)))
# 'to_string' is the function I said decoded the data earlier

我还向损失函数添加了一个部分,以使它无论是Tensor还是None类型都无法运行,因为否则我会得到错误信息。 它确实有效,但是当我尝试制作train变量时(在优化程序之后),我得到“没有为任何变量提供渐变”,这是代码:

train = optimizer.minimize(loss_func)

我不知道它是否有帮助,但这是完整的追溯:

ValueError                                Traceback (most recent call last)
<ipython-input-268-ffd2f0e929af> in <module>
----> 1 train = optimizer.minimize(loss)

c:\users\gabor\documents\anaconda\envs\tfdeeplearning\lib\site-packages\tensorflow\python\training\optimizer.py in minimize(self, loss, global_step, var_list, gate_gradients, aggregation_method, colocate_gradients_with_ops, name, grad_loss)
    320           "No gradients provided for any variable, check your graph for ops"
    321           " that do not support gradients, between variables %s and loss %s." %
--> 322           ([str(v) for _, v in grads_and_vars], loss))
    323 
    324     return self.apply_gradients(grads_and_vars, global_step=global_step,

ValueError: No gradients provided for any variable, check your graph for ops that do not support gradients, between variables ["<tf.Variable 'rnn/output_projection_wrapper/basic_lstm_cell/kernel:0' shape=(278, 1108) dtype=float32_ref>", "<tf.Variable 'rnn/output_projection_wrapper/basic_lstm_cell/bias:0' shape=(1108,) dtype=float32_ref>", "<tf.Variable 'rnn/output_projection_wrapper/kernel:0' shape=(277, 1) dtype=float32_ref>", "<tf.Variable 'rnn/output_projection_wrapper/bias:0' shape=(1,) dtype=float32_ref>"] and loss Tensor("Mean:0", shape=(), dtype=float32).

我真的不确定是什么导致了这个问题(我对tensorflow还是比较陌生),我知道这与变量未连接到损失函数有关。所以,如果我错过了什么,请告诉我!我将尝试尽可能多地更新!

谢谢;)

0 个答案:

没有答案