Tensorflow实现逻辑回归(使用MNIST数据集)

本文详细介绍了如何使用Tensorflow构建逻辑回归模型,并以MNIST数据集为例进行实战。从数据预处理到模型构建、训练、评估,每个步骤都有清晰的解释,适合初学者入门。
摘要由CSDN通过智能技术生成

今天我们讲一下如何使用Tensorflow实现逻辑回归,代码中采用了MNIST数据集。

首先,我们去获取MNIST数据集(下载链接:http://yann.lecun.com/exdb/mnist/),并将其读取到程序中。代码实现如下所示:

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data


mnist = input_data.read_data_sets('./data/mnist_data/', one_hot=True)
train_img = mnist.train.images
train_label = mnist.train.labels
test_img = mnist.test.images
test_label = mnist.test.labels

我将获取到的MNIST数据放在了当前目录下的data/mnist_data文件夹下,然后利用input_data函数解析该数据集。train_img和train_label构成训练集,包含60000个手写体数字图片和对应的标签;test_img和test_label表示测试集,包含10000个样本和10000个标签。

根据逻辑回归的基本公式y=Wx+b,在设计逻辑回归模型之前,我们先设定模型的输入和待求变量,代码如下所示ÿ

好的,以下是实现MNIST手写识别逻辑回归的步骤: 1. 导入依赖库 ```python import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers ``` 2. 加载数据集 ```python (x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data() ``` 3. 数据预处理 ```python x_train = x_train.reshape(-1, 28*28).astype("float32") / 255.0 x_test = x_test.reshape(-1, 28*28).astype("float32") / 255.0 y_train = y_train.astype("float32") y_test = y_test.astype("float32") ``` 4. 定义模型 ```python model = keras.Sequential([ layers.Dense(10, input_shape=(784,), activation='softmax') ]) ``` 这里我们使用了一个仅包含一个全连接层的简单模型,输出层使用了softmax激活函数。 5. 编译模型 ```python model.compile( optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'], ) ``` 6. 训练模型 ```python history = model.fit( x_train, y_train, batch_size=32, epochs=5, verbose=1, validation_split=0.1, ) ``` 7. 评估模型 ```python model.evaluate(x_test, y_test, batch_size=32, verbose=2) ``` 完整代码如下: ```python import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers (x_train, y_train), (x_test, y_test) = keras.datasets.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 y_train = y_train.astype("float32") y_test = y_test.astype("float32") model = keras.Sequential([ layers.Dense(10, input_shape=(784,), activation='softmax') ]) model.compile( optimizer='adam', loss='sparse_categorical_crossentropy', metrics=['accuracy'], ) history = model.fit( x_train, y_train, batch_size=32, epochs=5, verbose=1, validation_split=0.1, ) model.evaluate(x_test, y_test, batch_size=32, verbose=2) ``` 希望能对你有所帮助!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值