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)

gru_cell = tf.nn.rnn_cell.GRUCell(vad_cell_size)

with tf.name_scope('initial_state'):

cell_init_state = gru_cell.zero_state(batch_size, dtype=tf.float32)

cell_outputs, cell_final_state = tf.nn.dynamic_rnn(

gru_cell, tmp, initial_state=cell_init_state, time_major=False)

denoise_output = tf.keras.layers.Dense(1)(cell_outputs)

return denoise_output, cell_init_state, cell_final_state

波形图如下(这才是GRU的正确打开方式啊~):

再回头看之前写的调用keras,既然知道了是initial_state没有更新,那么如何进行更新呢?

网上查找了大量的资料,说要加上

update_ops = []

for old_value, new_value in layers.updates:

update_ops.append(tf.assign(old_value, new_value))

但是加上去没有效果,是我加错了还是其他的,大家欢迎指出来

以下是我做的一些尝试,就不一一详细说明了,大家看一下,具体不再展开,有问题大家交流一下,有解决方法的,能够分享出来,感激不尽~

def interface(_input):

# input_layer = tf.keras.layers.Input([None, 1])

# input_layer = tf.keras.layers.Input(batch_shape=(50, 20, 1))

tmp = tf.keras.layers.Dense(10)(_input)

# tmp = tf.keras.layers.Dense(24)(tmp)

# with tf.variable_scope('vad_gru', reuse=tf.AUTO_REUSE):

# vad_gru, final_state = tf.keras.layers.GRU(24, return_sequences=True, return_state=True, stateful=True)(tmp)

# print(vad_gru)

# _initial_state = vad_gru.zero_state(50, tf.float32)

# tf.get_variable_scope().reuse_variables()

# vad_gru = tf.contrib.

# tmp = tf.reshape(tmp, [-1, TIME_STEPS, vad_cell_size])

gru_cell = tf.nn.rnn_cell.GRUCell(vad_cell_size)

# gru_cell = tf.keras.layers.GRUCell(self.vad_cell_size)

with tf.name_scope('initial_state'):

cell_init_state = gru_cell.zero_state(batch_size, dtype=tf.float32)

cell_outputs, cell_final_state = tf.nn.dynamic_rnn(

gru_cell, tmp, initial_state=cell_init_state, time_major=False)

# print(cell_outputs.get_shape().as_list())

# cell_outputs = tf.reshape(cell_outputs, [-1, vad_cell_size])

denoise_output = tf.keras.layers.Dense(1)(cell_outputs)

print(denoise_output.get_shape().as_list())

# model = tf.keras.models.Model(input_layer, denoise_output)

# update_ops = []

# for old_value, new_value in model.layers[1].updates:

# update_ops.append(tf.assign(old_value, new_value))

return denoise_output, cell_init_state, cell_final_state

补充知识:TensorFlow和Keras常用方法(避坑)

TensorFlow

在TensorFlow中,除法运算:

1.tensor除法会使结果的精度高一级,可能会导致后面计算类型不匹配,如float32 / float32 = float64。

2.除法需要分子分母同类型,否则报错。

产生类似错误提示如下:

-1.TypeError: x and y must have the same dtype, got tf.float32 != tf.int32

-2.TypeError: Input ‘y' of ‘Mul' Op has type float32 that does not match type float64 of argument ‘x'.

-3.ValueError: Tensor conversion requested dtype float64 for Tensor with dtype float32: ‘Tensor(“Sum:0”, shape=(), dtype=float32)'

-4.ValueError: Incompatible type conversion requested to type ‘int32' for variable of type ‘float32_ref'

解决办法:

tf.cast(a, tf.float32) # 转换成同类型即可

tf.boolean_mask

K.gather

K.argmax

K.max

以上这篇解决TensorFlow调用Keras库函数存在的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

本文标题: 解决TensorFlow调用Keras库函数存在的问题

本文地址: http://www.cppcns.com/jiaoben/python/324684.html

python 无法引用 tensorflow.keras_解决TensorFlow调用Keras库函数存在的问题相关推荐

  1. python循环引用问题怎么解决_python解决循环引用问题

    当项目中的模块过多,或功能划分不够清晰时会出现循环引用的问题,如下 有两个模块moduleA 和 moduleB: #moduleA from moduleB import b def a(): pr ...

  2. python怎么引用多行输入_python调用shell返回两行第二行需要输入密码怎么办?import os os.syst...

    没有办法交互,用ftplib吧 # 例:FTP编程 from ftplib import FTP ftp = FTP() timeout = 30 port = 21 ftp.connect('192 ...

  3. python 调用 tensorflow.dll_解决windows上安装tensorflow时报错,“DLL load failed: 找不到指定的模块”的问题...

    最近打算开始研究一下机器学习,今天在windows上装tensorflow花了点功夫,其实前面的步骤不难,只要依次装好python3.5,numpy,tensorflow就行了,有一点要注意的是目前只 ...

  4. python变量初始化的位置不当、程序结果可能会出现问题_解决tensorflow由于未初始化变量而导致的错误问题...

    我写的这个程序 import tensorflow as tf sess=tf.InteractiveSession() x=tf.Variable([1.0,2.0]) a=tf.constant( ...

  5. 成功解决tensorflow.python.framework.errors_impl.NotFoundError: FindFirstFile failed for: ../checkpoints

    成功解决tensorflow.python.framework.errors_impl.NotFoundError: FindFirstFile failed for: ../checkpoints ...

  6. 成功解决 \tensorflow\…\datasets\mnist.py:290: DataSet.__init__ (from tensorflow.contrib.learn.python.lea

    成功解决 \tensorflow\-\datasets\mnist.py:290: DataSet.__init__ (from tensorflow.contrib.learn.python.lea ...

  7. 成功解决tensorflow\contrib\learn\python\learn\datasets\base._internal_retry.locals.wrap.locals.wrapp

    成功解决tensorflow\contrib\learn\python\learn\datasets\base._internal_retry.<locals>.wrap.<loca ...

  8. 成功解决tensorflow\contrib\learn\python\learn\datasets\mnist.py: maybe_download (from tensorflow.contri

    成功解决tensorflow\contrib\learn\python\learn\datasets\mnist.py: maybe_download (from tensorflow.contri ...

  9. python 无法引用 tensorflow.keras_win10+anaconda安装tensorflow和keras遇到的坑小结

    win10下利用anaconda安装tensorflow和keras的教程都大同小异(针对CPU版本,我的gpu是1050TI的MAX-Q,不知为啥一直没安装成功),下面简单说下步骤. 一 Anaco ...

最新文章

  1. java下载网络中的文件,java下载网络文件解决思路
  2. bzoj 4487: [Jsoi2015]染色问题
  3. 电气:需求响应:初始化一个调度周期的可转入转出负荷(python实现)
  4. 项目不能使用fn标签_无服务器,Java和FN项目的第一步
  5. koa2 mongdb 做后端接口的小demo
  6. [css] 说说sass有哪些你认为很棒的特性
  7. 1、如何理解SQL Server的实例
  8. 飞行器真的是计算机!
  9. linux 常用头文件,(常用头文件详解.doc
  10. arXiv pdf下载很慢的解决方法
  11. putty连接TPYBord V202开发板教程
  12. 寻找可接入正版音乐曲库的音乐API?来了解HIFIVE音乐开放平台!
  13. HTML放大镜 (商品放大镜)
  14. 注册德国商标的详细介绍
  15. linux 搭建Discuz论坛教程-个人实践笔记
  16. cesium里面能不能导入动画_cesium 添加动态 gif 图片
  17. Nginx: permanent 和 redirect 的区别
  18. 一张通往计算机世界的地图
  19. C#使用HttpWebRequest下载文件
  20. Spring Security授权_注解设置访问控制

热门文章

  1. 国产视频编码技术终获国家科学奖,从此可甩掉H.265高额专利费
  2. 【电赛】2019电子设计竞赛 纸张计数显示装置(F题)
  3. 企业软文推广共有几个步骤?记住这三步
  4. 如何高效快速的项目开发
  5. python数据展示库_数据分析与展示——Matplotlib库入门
  6. Windows共享文件夹设置配额
  7. 十二种标题编写方法,让你流量暴涨
  8. 企业微信开发:使用 JS-SDK 实现图像接口功能(六)
  9. 译文 | 通俗易懂的机器学习(2)
  10. 【PLM】【PDM】60页PPT终于说清了PDM和PLM的区别;智造时代,PLM系统10大应用趋势!