tf.keras.models.Sequential()与tf.keras.Sequential()的区别及适用场景
tf.keras.Sequential() 和 tf.keras.models.Sequential() 的区别与适用场景
这两个写法完全等价,没有任何功能上的差异,本质是同一个类的不同访问路径。
TensorFlow在设计Keras接口时,为了简化开发流程,把常用的组件(比如模型类、层类)同时在tf.keras根模块下设置了快捷别名。tf.keras.Sequential就是tf.keras.models.Sequential的直接别名,调用其中任何一个,都会创建出完全一样的Sequential模型,运行逻辑、训练效果没有区别——这也是你测试两种写法都能得到相同结果的原因。
适用场景
- 追求代码简洁高效:直接用
tf.keras.Sequential(),代码更短,编写速度更快,适合快速原型开发或个人项目; - 强调代码规范性与可读性:用
tf.keras.models.Sequential(),能明确体现类的模块归属,让团队协作时其他开发者一眼就能清楚这个模型类来自models子模块,适合大型项目或有统一代码规范的场景。
你的测试代码
第一种写法:
model = tf.keras.models.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) model.fit(x_train, y_train, epochs=50) model.evaluate(x_test, y_test)
第二种写法:
model = tf.keras.Sequential([ tf.keras.layers.Flatten(input_shape=(28, 28)), tf.keras.layers.Dense(128, activation='relu'), tf.keras.layers.Dense(10, activation='softmax') ]) model.compile(optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy']) model.fit(x_train, y_train, epochs=50) model.evaluate(x_test, y_test)
内容的提问来源于stack exchange,提问作者Collins Mwaura
相关产品推荐
相关产品推荐

