当前位置:  开发笔记 > 编程语言 > 正文

在tensorflow代码中使用keras层

如何解决《在tensorflow代码中使用keras层》经验,为你挑选了1个好方法。

假设我有一个简单的神经网络,其输入层和在tensorflow中编程的单个卷积层:

  # Input Layer
  input_layer = tf.reshape(features["x"], [-1, 28, 28, 1])

  # Convolutional Layer #1
  conv1 = tf.layers.conv2d(
      inputs=input_layer,
      filters=32,
      kernel_size=[5, 5],
      padding="same",
      activation=tf.nn.relu)

我遗漏了网络定义的任何其他部分features.

如果我想在此卷积层之后添加LSTM层,我将必须使卷积层TimeDistributed(以keras的语言),然后将TimeDistributed层的输出放入LSTM.

Tensorflow提供对tf.keras.layers中 keras层的访问.我可以直接在tensorflow代码中使用keras层吗?如果是这样,怎么样?我是否也可以使用tf.keras.layers.lstm来实现LSTM层?

所以一般来说:纯粹的张量流代码和keras代码的混合是否可能,我可以使用tf.keras.layers吗?



1> collector..:

是的,这是可能的.

导入TensorFlow和Keras并将您的Keras会话链接到TF:

import tensorflow as tf
import keras
from keras import backend as K

tf_sess = tf.Session()
K.set_session(tf_sess)

现在,在您的模型定义中,您可以混合TF和Keras层,如下所示:

# Input Layer
input_layer = tf.reshape(features["x"], [-1, 28, 28, 1])

# Convolutional Layer #1
conv1 = tf.layers.conv2d(
    inputs=input_layer,
    filters=32,
    kernel_size=[5, 5],
    padding="same",
    activation=tf.nn.relu)

# Flatten conv output
flat = tf.contrib.layers.flatten(conv1)

# Fully-connected Keras layer
layer2_dense = keras.layers.Dense(128, activation='relu')(flat)

# Fully-connected TF layer (output)
output_preds = tf.layers.dense(layer2_dense, units=10)

这个答案来自Francois Chollet 的Keras博客文章.

推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有