tensorflow在1.4版本引入了keras,封装成库。现想将keras版本的GRU代码移植到TensorFlow中,看到TensorFlow中有Keras库,大喜,故将神经网络定义部分使用Keras的Function API方式进行定义,训练部分则使用TensorFlow来进行编写。一顿操作之后,运行,没有报错,不由得一喜。但是输出结果,发现,和预期的不一样。难道是欠拟合?故采用正弦波预测余弦来验证算法模型。
部分调用keras库代码如上图所示,用正弦波预测余弦波,出现如下现象:
def interface(_input):
tmp = tf.keras.layers.Dense(10)(_input)
vad_gru = tf.keras.layers.GRU(24, return_sequences=True)(tmp)
denoise_output = tf.keras.layers.Dense(1)(vad_gru)
return denoise_output
波形是断断续续的。而且最后不收敛。
运行N久。。。之后
基本断定是程序本身的问题,于是通过排查,发现应该是GRU的initial_state没有进行更新导致的。导致波形是断断续续的,没有学习到前一次网络的输出。于是,决定不使用Keras库实现一遍:
部分代码如下:
def interface(_input):
tmp = tf.keras.layers.Dense(10)(_input)
gr