Python 对影响学习的权重和偏差依赖性感到困惑
我有一个工作的LSTM模型,它有一个从循环状态到输出的权重/偏差层。然后我也编写了相同的系统,但有两层。这意味着我将有LSTM,然后是一个隐藏层,然后是输出。我写了几行来定义这个双层模型,但一次也没有使用它们。但是,现在这些层已经存在,但根本没有被使用,它不会学习!因此,我的权重和偏差定义如下:Python 对影响学习的权重和偏差依赖性感到困惑,python,tensorflow,recurrent-neural-network,lstm,Python,Tensorflow,Recurrent Neural Network,Lstm,我有一个工作的LSTM模型,它有一个从循环状态到输出的权重/偏差层。然后我也编写了相同的系统,但有两层。这意味着我将有LSTM,然后是一个隐藏层,然后是输出。我写了几行来定义这个双层模型,但一次也没有使用它们。但是,现在这些层已经存在,但根本没有被使用,它不会学习!因此,我的权重和偏差定义如下: weights = {
weights = {
# if going straight from PLSTM output to x,y prediction
'out': tf.Variable(tf.random_normal([FLAGS.n_hidden, n_out], stddev=1/FLAGS.n_hidden, dtype=tf.float32)),
# if fully connected feed-forward hidden layer between PLSTM output and x,y prediction
'outHidden1': tf.Variable(tf.random_normal([FLAGS.n_hidden, FLAGS.n_middle], dtype=tf.float32)),
'outHidden2': tf.Variable(tf.random_normal([FLAGS.n_middle, n_out], dtype=tf.float32))
}
biases = {
# if going straight from PLSTM output to x,y prediction
'out': tf.Variable(tf.random_normal([n_out], dtype=tf.float32)),
# if fully connected feed-forward hidden layer between PLSTM output and x,y predictio
'outHidden1': tf.Variable(tf.random_normal([FLAGS.n_middle], dtype=tf.float32)),
'outHidden2': tf.Variable(tf.random_normal([n_out], dtype=tf.float32))
}
所以我定义了双层权重和偏差,但在训练或测试中从未使用过
我将权重/偏差合并为一行:
return tf.matmul(relevant, weights['out']) + biases['out']
相关的是LSTM输出。所以我只在权重和偏差字典中使用“out”变量
它什么也学不到。然后,我对双层变量进行了如下注释:
weights = {
# if going straight from PLSTM output to x,y prediction
'out': tf.Variable(tf.random_normal([FLAGS.n_hidden, n_out], stddev=1/FLAGS.n_hidden, dtype=tf.float32)),
# if fully connected feed-forward hidden layer between PLSTM output and x,y prediction
# 'outHidden1': tf.Variable(tf.random_normal([FLAGS.n_hidden, FLAGS.n_middle], dtype=tf.float32)),
# 'outHidden2': tf.Variable(tf.random_normal([FLAGS.n_middle, n_out], dtype=tf.float32))
}
biases = {
# if going straight from PLSTM output to x,y prediction
'out': tf.Variable(tf.random_normal([n_out], dtype=tf.float32)),
# if fully connected feed-forward hidden layer between PLSTM output and x,y predictio
# 'outHidden1': tf.Variable(tf.random_normal([FLAGS.n_middle], dtype=tf.float32)),
# 'outHidden2': tf.Variable(tf.random_normal([n_out], dtype=tf.float32))
}
…它又开始工作了。这些变量的存在如何阻碍学习?我初始化了它们,但不应该在它们之间运行渐变,backprop不应该与那些未使用的变量有任何关联。还是我误解了什么?您是否尝试过在注释了这些变量的情况下多次运行程序?您的系统在某些初始化过程中可能会不稳定。我运行了几次,因为我不相信这就是问题所在。它一直都在发生。你试过在张力板上可视化系统吗?您是否也可以添加用于优化器/培训的代码?此外,无需重复您注释的代码。此外,这可能很愚蠢,但请尝试为您注释的每个变量指定一个
名称
。不幸的是,我不太熟悉TensorBoard。不过,给他们起不同的名字就行了。现在的问题是为什么。。。如果它们都在同一个字典中声明,可能会出现一些依赖项?您是否尝试过在注释这些变量的情况下多次运行程序?您的系统在某些初始化过程中可能会不稳定。我运行了几次,因为我不相信这就是问题所在。它一直都在发生。你试过在张力板上可视化系统吗?您是否也可以添加用于优化器/培训的代码?此外,无需重复您注释的代码。此外,这可能很愚蠢,但请尝试为您注释的每个变量指定一个名称
。不幸的是,我不太熟悉TensorBoard。不过,给他们起不同的名字就行了。现在的问题是为什么。。。如果它们都在同一个字典中声明,可能会出现一些依赖项?