keras上手之:与tensorflow混合编程
来源:互联网 发布:unity3d天空盒神庙 编辑:程序博客网 时间:2024/06/13 03:49
tensorflow具备许多优秀的函数和功能,比如tensorboard,keras作为tensorflow的高级API, 封装很多tensorflow的代码,使得代码模块化,非常方便。
当然,由于keras的模型和层与tensorflow的张量高度兼容,可以用keras建模,用tensorflow输入输出。
例如下面的例子:
import tensorflow as tffrom keras import backend as Kfrom keras.layers import Densefrom keras.objectives import categorical_crossentropyfrom keras.metrics import categorical_accuracy as accuracyfrom tensorflow.examples.tutorials.mnist import input_data# create a tf session,and register with keras。sess = tf.Session()K.set_session(sess)# this place holder is the same with input layer in kerasimg = tf.placeholder(tf.float32, shape=(None, 784))# keras layers can be called on tensorflow tensorsx = Dense(128, activation='relu')(img)x = Dense(128, activation='relu')(x)preds = Dense(10, activation='softmax')(x)# labellabels = tf.placeholder(tf.float32, shape=(None, 10))# loss functionloss = tf.reduce_mean(categorical_crossentropy(labels, preds))train_step = tf.train.GradientDescentOptimizer(0.5).minimize(loss)mnist_data = input_data.read_data_sets('MNIST_data', one_hot=True)# initialize all variablesinit_op = tf.global_variables_initializer()sess.run(init_op)with sess.as_default(): for i in range(1000): batch = mnist_data.train.next_batch(50) train_step.run(feed_dict={img:batch[0], labels:batch[1]})acc_value = accuracy(labels, preds)with sess.as_default(): print(acc_value.eval(feed_dict={img:mnist_data.test.images, labels:mnist_data.test.labels}))
上述代码中,在训练阶段直接采用了tf的方式,甚至都没有定义keras的model!最重要的一步就是这里:
# create a tf session,and register with keras。sess = tf.Session()K.set_session(sess)
创建一个TensorFlow会话并且注册Keras。这意味着Keras将使用我们注册的会话来初始化它在内部创建的所有变量。
keras的层和模型都充分兼容tensorflow的各种scope, 例如name scope,device scope和graph scope。修改一下,在tensorboard输出训练过程中的loss曲线:
import tensorflow as tffrom keras import backend as Kfrom keras.layers import Densefrom keras.objectives import categorical_crossentropyfrom keras.metrics import categorical_accuracy as accuracyfrom tensorflow.examples.tutorials.mnist import input_datasess = tf.Session()K.set_session(sess)with tf.name_scope('input'): # this place holder is the same with input layer in keras img = tf.placeholder(tf.float32, shape=(None, 784)) labels = tf.placeholder(tf.float32, shape=(None, 10))mnist_data = input_data.read_data_sets('MNIST_data', one_hot=True)def feed_dict(train): if train: xs, ys = mnist_data.train.next_batch(50) else: xs, ys = mnist_data.test.images, mnist_data.test.labels return {img:xs, labels:ys}# keras layers can be called on tensorflow tensorswith tf.name_scope('NN'): x = Dense(128, activation='relu')(img) x = Dense(128, activation='relu')(x) preds = Dense(10, activation='softmax')(x)with tf.name_scope('loss'): loss = tf.reduce_mean(categorical_crossentropy(labels, preds))# tensorboardwriter = tf.summary.FileWriter('./keras_tensorflow_log/')outloss = tf.summary.scalar('loss', loss)merged = tf.summary.merge([outloss])with tf.name_scope('train'): train_step = tf.train.GradientDescentOptimizer(0.5).minimize(loss)# initialize all variablesinit_op = tf.global_variables_initializer()sess.run(init_op)with sess.as_default(): for i in range(1000): summary, loss = sess.run([merged, train_step], feed_dict=feed_dict(True)) writer.add_summary(summary, global_step=i)writer.close()
在命令行输入: tensorboard --logdir=./keras_tensorflow_log
打开tensorboard就可以看到loss history了:
阅读全文
0 0
- keras上手之:与tensorflow混合编程
- keras 与tensorflow 混合使用
- keras 之 0基础上手
- keras上手系列之: 模型的保存
- 新人上手TensorFlow 之前前后后
- 新人上手TensorFlow 之 Normalization
- 新人上手TensorFlow之TensorFlow基本概念
- Keras + TensorFlow
- sklearn、TensorFlow、keras模型保存与读取
- 深度学习之安装 TensorFlow Keras
- Matlab与VC混合编程之二
- Matlab与VC混合编程之三
- QT之QML与C++混合编程
- keras上手系列之: 代码的整体框架
- keras上手系列之:序列到序列预测问题
- Keras快速上手
- Linux 编程之C与脚本的混合编程
- Linux 编程之C与脚本的混合编程
- Robot Framework 源代码阅读笔记 之三
- 校oj195——双for用contiue加速
- 基于Vue2.0的音乐播放器(2)——歌手模块
- python爬虫案例-爬取西刺免费代理服务器IP等信息
- 常用OLAP工具特点总结
- keras上手之:与tensorflow混合编程
- 致歉函
- MAC切换Python版本
- Mipi LCD 通用移植调试流程
- Django module数据类型
- 多态及其对象模型
- 开通Redis的远程访问
- 文章标题
- 读书笔记《C++ Primer》第五版——第十三章 拷贝控制