在tensorflow代码

时间:2017-11-07 21:21:58

标签: python tensorflow keras

假设我有一个简单的神经网络,其输入层和在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 个答案:

答案 0 :(得分:10)

是的,这是可能的。

导入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的a Keras blog帖子。