You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TensorFlow双输入拼接模型代码正确性验证及可视化方法问询

问题

我想要实现下图所示的神经网络模型:
Neural Network Diagram

为此我编写了如下代码:

model = tf.keras.Sequential()
volatility = tf.keras.Input(shape=(2, ), name='GeneralParameters')
otherParameters = tf.keras.Input(shape=(3, ), name='OtherParameters')

x = tf.keras.layers.Dense(2, activation="relu")(volatility)
x = tf.keras.layers.Dense(1, activation="relu")(x)
x = tf.keras.Model(inputs=volatility, outputs=x)

y = tf.keras.layers.Dense(2, activation="relu")(otherParameters)
y = tf.keras.layers.Dense(1, activation="relu")(y)
y = tf.keras.Model(inputs=otherParameters, outputs=y)

combined = tf.keras.layers.concatenate([x.output, y.output])
z = tf.keras.layers.Dense(2, activation="relu")(combined)
z = tf.keras.layers.Dense(1, activation="linear")(z)

model = tf.keras.Model(inputs=[x.input, y.input], outputs=z)

请问这段代码是否与图示模型相符?通用情况下如何验证代码对应模型,以及如何从代码生成模型图?


回答

一、代码与图示模型是否相符?

完全相符。对照图示结构逐一核对:

  • 第一个输入分支:2维输入 → 含2个神经元的ReLU层 → 含1个神经元的ReLU层,代码中volatility输入分支完全匹配;
  • 第二个输入分支:3维输入 → 含2个神经元的ReLU层 → 含1个神经元的ReLU层,代码中otherParameters输入分支完全匹配;
  • 合并与输出部分:两个分支的1维输出拼接成2维张量 → 含2个神经元的ReLU层 → 1维线性输出层,代码中的拼接和后续Dense层也完全对应图示逻辑。

二、通用验证代码对应模型的方法

  • 打印模型结构摘要:调用model.summary(),会输出每层的名称、输出形状、参数总量,逐行核对输入维度、每层神经元数量、激活函数、拼接/合并操作是否与设计一致;
  • 追踪张量形状:在代码中每层输出后加入print(张量.shape),比如x = tf.keras.layers.Dense(2, activation="relu")(volatility)后加print(x.shape),确认每一步的输出维度符合预期;
  • 测试输入输出:构造符合输入形状的测试数据(比如用numpy生成随机数组),运行model.predict(),检查输出形状是否正确,同时可以反向验证各分支的中间输出是否符合设计逻辑。

三、从代码生成模型图的方法

方法1:使用Keras内置的plot_model工具

首先确保安装了依赖库pydot和graphviz,然后执行以下代码:

from tensorflow.keras.utils import plot_model

# 生成模型图,保存为图片文件
plot_model(
    model,
    to_file='model_structure.png',
    show_shapes=True,  # 显示每层输入输出形状
    show_layer_names=True,  # 显示层名称
    rankdir='TB'  # 布局方向:TB为从上到下,LR为从左到右
)

方法2:通过TensorBoard可视化

  1. 生成模型日志:
import tensorflow as tf
import datetime

# 设置日志保存路径
log_dir = "logs/model_log/" + datetime.datetime.now().strftime("%Y%m%d-%H%M%S")
# 创建TensorBoard回调
tensorboard_callback = tf.keras.callbacks.TensorBoard(log_dir=log_dir, histogram_freq=1)

# 若模型已训练,可通过fit传入回调;未训练也可手动写入日志
model.save(log_dir + "/model.h5")
  1. 启动TensorBoard:在终端执行命令tensorboard --logdir logs/model_log,然后在浏览器打开提示的地址(通常为http://localhost:6006),即可查看模型的可视化结构、参数分布等信息。

内容的提问来源于stack exchange,提问作者Peter Chikov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.30 16:06:28