tf.keras.layers.CuSTM失败,而tf.keras.layers.LSTM失败

时间:2019-08-16 04:12:44

标签: python-3.x tensorflow keras

我正在编辑神经网络以在GPU上运行。但是,当我将LSTM层之一切换到CuDNNLSTM(具有完全相同的参数)时,该模型无法编译并引发以下错误:

形状必须相等,但必须为2和3     将形状0与其他形状合并。对于输入形状为[?,200],[?, 1536,50]的'loss_52 / AddN'(op:'AddN')。

我还有其他CuDNN层,它们的编译都很好,而这层和那些层之间的唯一区别是,该层将return_sequences设置为true,其他人则没有,但是我不知道那是否有什么要用它做

这是我的功能,这个版本可以编译

def build_generator(original_input_music, input_music):

        hidden_output = tf.keras.layers.CuDNNLSTM(200, activity_regularizer = tf.math.sigmoid)(input_music)

        repeated_output = tf.keras.layers.RepeatVector(1536)(hidden_output)
        end_sequence = tf.keras.layers.LSTM(50, return_sequences = True, activation = tf.math.sigmoid)(repeated_output)
        results = tf.keras.layers.Concatenate(1)([input_music, end_sequence])
        return tf.keras.Model(original_input_music, results), results

但是只要我将1个LSTM层切换到CuDNN:

def build_generator(original_input_music, input_music):

        hidden_output = tf.keras.layers.CuDNNLSTM(200, activity_regularizer = tf.math.sigmoid)(input_music)

        repeated_output = tf.keras.layers.RepeatVector(1536)(hidden_output)

        end_sequence = tf.compat.v1.keras.layers.CuDNNLSTM(50, return_sequences = True, activity_regularizer = tf.math.sigmoid)(repeated_output)
        results = tf.keras.layers.Concatenate(1)([input_music, end_sequence])
        return tf.keras.Model(original_input_music, results), results

model.compile失败

这是编译步骤,仅供参考:

combined.compile(optimizer = 'adam', loss='binary_crossentropy')

(需要注意的是-我正在使用的计算机仅是CPU,但是我只是想查看模型是否可以编译,并且基于其他CuDNN层都可以正常编译的事实,我没有认为那不是问题。

0 个答案:

没有答案