假设我有一个简单的神经网络,其输入层和在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吗?
是的,这是可能的.
导入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博客文章.