| import numpy as np |
| import tensorflow as tf |
| from tensorflow import keras |
| from tensorflow.keras import layers |
01 简单的函数API构建模型实例
1.1 建立模型
| inputs = keras.Input(shape=(784,)) |
| |
| dense = layers.Dense(64, activation="relu") |
| |
| x = dense(inputs) |
| x = layers.Dense(64, activation="relu")(x) |
| outputs = layers.Dense(10)(x) |
| model = keras.Model(inputs=inputs, outputs=outputs, name="mnist_model") |
| |
| model.summary() |
| Model: "mnist_model" |
| _________________________________________________________________ |
| Layer (type) Output Shape Param # |
| ================================================================= |
| input_1 (InputLayer) [(None, 784)] 0 |
| |
| dense (Dense) (None, 64) 50240 |
| |
| dense_1 (Dense) (None, 64) 4160 |
| |
| dense_2 (Dense) (None, 10) 650 |
| |
| ================================================================= |
| Total params: 55,050 |
| Trainable params: 55,050 |
| Non-trainable params: 0 |
| _________________________________________________________________ |
| |
1.2 绘制模型计算层图
| keras.utils.plot_model(model, "my_first_model.png",show_shapes=True) |
| |

1.3 训练、评估、推断
| (x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data(path='mnist.npz') |
| |
| |
| x_train = x_train.reshape(60000, 784).astype("float32") / 255 |
| x_test = x_test.reshape(10000, 784).astype("float32") / 255 |
| print(y_train.dtype) |
| |
| model.compile( |
| loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True), |
| optimizer=keras.optimizers.RMSprop(), |
| metrics=["accuracy"], |
| ) |
| |
| history = model.fit(x_train, y_train, batch_size=64, epochs=2, validation_split=0.2) |
| test_scores = model.evaluate(x_test, y_test, verbose=2) |
| print("Test loss:", test_scores[0]) |
| print("Test accuracy:", test_scores[1]) |
| Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/mnist.npz |
| 11490434/11490434 [==============================] - 2s 0us/step |
| uint8 |
| Epoch 1/2 |
| 750/750 [==============================] - 1s 1ms/step - loss: 0.3449 - accuracy: 0.9018 - val_loss: 0.1955 - val_accuracy: 0.9438 |
| Epoch 2/2 |
| 750/750 [==============================] - 1s 1ms/step - loss: 0.1616 - accuracy: 0.9518 - val_loss: 0.1354 - val_accuracy: 0.9602 |
| 313/313 - 0s - loss: 0.1313 - accuracy: 0.9600 - 186ms/epoch - 595us/step |
| Test loss: 0.131303071975708 |
| Test accuracy: 0.9599999785423279 |
02 处理复杂的计算拓扑图
2.1 具有多个输入和输出的模型
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理