Tensorflow2.0学习(四):Logist回归预测手写数字

版权提示:以下所有例子都是参考github大神制作,我只是搬运工
https://github.com/YunYang1994/TensorFlow2.0-Examples
一、读取数据与制作数据

import tensorflow as tf
import numpy as np

learning_rate = 0.001
training_epoch = 6
batch_size = 32

(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data()
train_dataset = (tf.data.Dataset.from_tensor_slices((tf.reshape(x_train, [-1, 784]), y_train))
                 .batch(batch_size)
                 .shuffle(1000)
                )
train_dataset = (
    train_dataset.map(lambda x, y:
                      (tf.divide(tf.cast(x, tf.float32), 255.0),
                       tf.reshape(tf.one_hot(y, 10), (-1, 10))))
)


关于tf.data.Dataset.from_tensor_slices()函数
摘自tf.data.Dataset.from_tensor_slices的用法
使用tf.data.Dataset.from_tensor_slices五步加载数据集
该函数是dataset核心函数之一,它的作用是把给定的元组、列表和张量等数据进行特征切片。切片的范围是从最外层维度开始的。如果有多个特征进行组合,那么一次切片是把每个组合的最外维度的数据切开,分成一组一组的。

假设我们现在有两组数据,分别是特征和标签,为了简化说明问题,我们假设每两个特征对应一个标签。之后把特征和标签组合成一个tuple,那么我们的想法是让每个标签都恰好对应2个特征,而且像直接切片,比如:[f11, f12] [t1]。f11表示第一个数据的第一个特征,f12表示第1个数据的第二个特征,t1表示第一个数据标签。那么tf.data.Dataset.from_tensor_slices就是做了这件事情.

通常用这个函数有五步走策略
Step0: 准备要加载的numpy数据
Step1: 使用 tf.data.Dataset.from_tensor_slices() 函数进行加载
Step2: 使用 shuffle() 打乱数据
Step3: 使用 map() 函数进行预处理
Step4: 使用 batch() 函数设置 batch size 值
Step5: 根据需要 使用 repeat() 设置是否循环迭代数据集

二、训练模型

# Set model weights
W = tf.Variable(tf.zeros([784, 10]))
b = tf.Variable(tf.zeros([10]))

# Construct model
model = lambda x: tf.nn.softmax(tf.matmul(x, W) + b) # Softmax
# Minimize error using cross entropy
compute_loss = lambda true, pred: tf.reduce_mean(tf.reduce_sum(tf.losses.binary_crossentropy(true, pred), axis=-1))
# caculate accuracy
compute_accuracy = lambda true, pred: tf.reduce_mean(tf.keras.metrics.categorical_accuracy(true, pred))
# Gradient Descent
optimizer = tf.optimizers.Adam(learning_rate)

for epoch in range(training_epoch):
    for i, (x_, y_) in enumerate(train_dataset):
        with tf.GradientTape() as tape:
            pred = model(x_)
            loss = compute_loss(y_, pred)
        acc = compute_accuracy(y_, pred)
        grads = tape.gradient(loss, [W, b])
        optimizer.apply_gradients(zip(grads, [W, b]))
        print("=> loss %.2f acc %.2f" %(loss.numpy(), acc.numpy()))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
logist回归是一种在Excel中常用的统计分析方法之一,常用于处理二分类问题。它是一种广义线性回归模型,可以通过线性组合将自变量转化为对数几率(logit),并使用最大似然估计法来拟合模型。 在Excel中,可以通过内置的LOGISTIC函数进行logist回归分析。首先,要准备好包含自变量和因变量的数据集。然后,在Excel中选择一个空白的单元格,并输入如下公式: =LOGISTIC(y_range, x_range, constant, statistics) 其中,y_range是因变量的数据范围,x_range是自变量的数据范围,constant是一个逻辑值,用于指定是否包含常数项,statistics是一个逻辑值,用于指定是否输出额外的统计分析结果。 输入完公式后,按下回车键,Excel会计算并输出logist回归的结果。输出的结果包括回归系数、标准误差、z值、P值等,可以用于评估自变量的影响程度和统计显著性。 此外,Excel还提供了一些其他常用的函数和工具,用于对logist回归结果进行进一步分析和解释。比如,可以使用LOGEST函数来估计回归系数的置信区间,使用MINVERSE函数来计算自变量之间的多重共线性。 总之,通过Excel中的logist回归函数和相关工具,我们可以方便地进行二分类问题的统计分析和预测。但需要注意的是,logist回归是一种假设特定条件下有效的模型,对于不满足这些条件的数据,结果可能不准确,因此在使用时需要谨慎考虑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值