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

使用TensorFlow构建神经网络时如何解决model.summary()的ValueError

问题:调用model.summary()触发ValueError错误

使用TensorFlow构建神经网络时,调用model.summary()查看网络结构,触发如下错误:

ValueError: Cannot convert '784' to a shape.

用户完整代码如下:

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras import layers, models
from tensorflow.keras.datasets import mnist

(x_train, y_train), (x_test, y_test) = mnist.load_data()
x_train = x_train.reshape(-1, 28*28).astype("float32") / 255.0
x_test = x_test.reshape(-1, 28*28).astype("float32") / 255.0

# sequential model for one input to one output
model = keras.Sequential(
    [
        keras.Input(shape=(28*28)),
        layers.Dense(512, activation='relu'),
        layers.Dense(256, activation='relu'),
        layers.Dense(10),
    ]
)


print(model.summary()),
import sys
sys.exit()


model.compile(
    loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True),
    optimizer=keras.optimizers.Adam(learning_rate=0.001),
    metrics=["accuracy"],
)

model.fit(x_train, y_train, batch_size=32, epochs=5, verbose=2)
model.evaluate(x_test, y_test, batch_size=32, verbose=2)

解决方案

错误根源在于keras.Input(shape=(28*28))这一行:

  • shape参数要求传入单元素元组来表示一维输入的维度,但(28*28)计算后等价于整数784,不是合法的元组格式(元组需要包含逗号,比如(784,))。

只需将输入层的shape参数修改为以下两种形式之一即可:

方法1:直接指定元组

keras.Input(shape=(784,))

方法2:保留计算式并添加逗号

keras.Input(shape=(28*28,))

修改后重新运行代码,model.summary()就能正常输出网络结构摘要。

内容的提问来源于stack exchange,提问作者Isesele Victor

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:58:16