在Keras中显示模型布局/设计(带所有连接)

在Keras中显示模型布局/设计(带所有连接),keras,visualization,lstm,recurrent-neural-network,machine-learning-model,Keras,Visualization,Lstm,Recurrent Neural Network,Machine Learning Model,当我在训练Keras LSTM模型后对其进行测试时,与从.h5文件加载该训练模型时相比,我有很大的不同(第一个模型的精度始终>0.85,但后一个模型的精度始终低于

当我在训练Keras LSTM模型后对其进行测试时,与从
.h5
文件加载该训练模型时相比,我有很大的不同(第一个模型的精度始终>0.85,但后一个模型的精度始终低于<0.2,即随机猜测)

然而,我检查了权重,它们是相同的,而且Keras通过
plot\u model
提供给我的稀疏布局也是相同的,但由于这仅检索粗略的概述:


是否可以显示Keras模型的完整布局(尤其是节点连接)?

如果您使用的是tensorflow后端,除此之外,还可以使用回调在tensorboard中可视化整个图形。例如:

callback=keras.callbacks.TensorBoard(log_dir='./graph',
直方图_freq=0,
write_graph=True,
write_images=True)
model.fit(…,回调=[callback])
然后从同一目录运行
tensorboard--logdir./graph

这是一条快速的捷径,但你可以走得更远。 例如,添加tensorflow代码以定义(加载)自定义
tf.Graph
实例中的模型,如下所示:

从keras.layers导入LSTM
导入tensorflow作为tf
my_graph=tf.graph()
使用我的\u图。作为\u默认值():
#LSTM层中的所有ops/变量都是作为图形的一部分创建的
x=tf.placeholder(tf.float32,shape=(无,20,64))
y=LSTM(32)(x)
。。之后,您可以等等来比较模型

我个人认为,最简单的方法是设置自己的会话。它在所有情况下都能工作,只需最少的修补:

将tensorflow导入为tf
从keras导入后端为K
sess=tf.Session()
K.SETU会话(sess)
...
#现在可以评估/访问此会话中的任何节点,例如`sess.graph`