tensorflow基本操作小白快速构建线性回归和分类模型

TensorFlow基本操作小白快速构建线性回归和分类模型

TensorFlow是谷歌开源的深度学习框架,近年来深受广大开发者的喜爱。本文将介绍TensorFlow基本操作,通过构建线性回归和分类模型的示例,展示如何使用TensorFlow搭建并训练机器学习模型。

TensorFlow基本操作

张量(Tensor)

TensorFlow中,所有的数据都是通过张量表示的。张量可以被认为是矩阵的推广,可以是任意维度的数组。在代码中,张量被表示为NumPy数组或TensorFlow提供的张量对象。以下是创建张量的方法:

import tensorflow as tf
import numpy as np

# 创建一个1维张量
tensor1 = tf.constant([1,2,3])

# 创建一个2维张量
tensor2 = tf.constant([[1,2,3], [4,5,6]])

# 创建一个3维张量
tensor3 = tf.constant([[[1,2], [3,4]], [[5,6], [7,8]]])

# 从NumPy数组创建张量
np_array = np.array([[1,2,3], [4,5,6]])
tensor4 = tf.constant(np_array)

print(tensor1)
print(tensor2)
print(tensor3)
print(tensor4)

变量(Variable)

在机器学习模型中,权重和偏置是需要学习的参数。这些参数需要被存储在变量中,并且在训练过程中不断被更新。以下是创建变量的方法:

# 创建一个变量,并指定初始值为0
var = tf.Variable(0)

# 创建一个长度为3的变量,并指定初始值为随机数
var1 = tf.Variable(tf.random.normal([3]))

# 从NumPy数组创建变量,指定初始值为数组值
np_array = np.array([1,2,3])
var2 = tf.Variable(np_array, dtype=tf.float32)

print(var)
print(var1)
print(var2)

操作(Operation)

在TensorFlow中,所有的计算都是通过操作进行的。算数、逻辑、数组操作等都是操作。常见的操作如下:

  • 数学运算(加、减、乘、除)
  • 矩阵运算(乘、转置、逆矩阵)
  • 数组操作(重排、切片、拼接、填充)
  • 逻辑运算(与、或、非)

以下是创建操作的方法:

# 创建两个张量,进行加法操作
a = tf.constant(2)
b = tf.constant(3)
c = tf.add(a, b)

# 创建两个矩阵,进行乘法操作
x = tf.constant([[1,2], [3,4]])
y = tf.constant([[5,6], [7,8]])
z = tf.matmul(x, y)

# 创建一个数组,进行切片操作
arr = tf.constant([1,2,3,4,5], shape=[1,5])
sliced_arr = tf.slice(arr, [0,1], [1,2])

print(c)
print(z)
print(sliced_arr)

线性回归模型示例

以下是使用TensorFlow构建线性回归模型的示例:

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

# 构建训练数据
x_train = np.array([1,2,3,4,5,6,7,8,9,10])
y_train = np.array([2,4,6,8,10,12,14,16,18,20])

# 训练参数
learning_rate = 0.01
training_epochs = 1000

# 创建权重变量和偏置变量
w = tf.Variable(0.0, name='weights')
b = tf.Variable(0.0, name='bias')

# 构建线性模型
def linear_regression(x):
    return w * x + b

# 定义损失函数
def loss_fn(predicted_y, desired_y):
    return tf.reduce_mean(tf.square(predicted_y - desired_y))

# 定义优化器
optimizer = tf.optimizers.SGD(learning_rate=learning_rate)

# 定义训练函数
def train(x, y):
    with tf.GradientTape() as tape:
        predicted_y = linear_regression(x)
        loss = loss_fn(predicted_y, y)
    gradients = tape.gradient(loss, [w, b])
    optimizer.apply_gradients(zip(gradients, [w, b]))

# 训练模型
for epoch in range(training_epochs):
    train(x_train, y_train)

# 可视化训练结果
predicted_y = linear_regression(x_train)
plt.plot(x_train, y_train, 'bo', label='Training data')
plt.plot(x_train, predicted_y, 'r', label='Fitted line')
plt.legend()
plt.show()

在这个示例中,我们利用TensorFlow构建了一个线性模型,通过最小化损失函数来训练权重和偏置变量,最后可视化训练的结果。

分类模型示例

以下是使用TensorFlow构建分类模型的示例:

import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
from sklearn.datasets import make_classification
from sklearn.model_selection import train_test_split

# 构造训练数据
X, y = make_classification(n_samples=1000, n_classes=2, n_features=10, random_state=42)
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练参数
learning_rate = 0.001
training_epochs = 100

# 创建权重变量和偏置变量
w = tf.Variable(tf.zeros([10, 1]), name='weights')
b = tf.Variable(tf.zeros([1]), name='bias')

# 构建逻辑回归模型
def logistic_regression(x):
    return tf.sigmoid(tf.matmul(x, w) + b)

# 定义损失函数
def loss_fn(predicted_y, desired_y):
    return tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=predicted_y, labels=desired_y))

# 定义优化器
optimizer = tf.optimizers.SGD(learning_rate=learning_rate)

# 构建训练函数
def train(x, y):
    with tf.GradientTape() as tape:
        predicted_y = logistic_regression(x)
        loss = loss_fn(predicted_y, y)
    gradients = tape.gradient(loss, [w, b])
    optimizer.apply_gradients(zip(gradients, [w, b]))
    return loss

# 训练模型
train_losses = []
test_losses = []
for epoch in range(training_epochs):
    train_loss = train(X_train, y_train)
    test_loss = loss_fn(logistic_regression(X_test), y_test)
    train_losses.append(train_loss)
    test_losses.append(test_loss)
    print(f'Epoch {epoch}, Train Loss: {train_loss:.4f}, Test Loss: {test_loss:.4f}')

# 可视化训练结果
plt.plot(train_losses, label='Train loss')
plt.plot(test_losses, label='Test loss')
plt.legend()
plt.show()

在这个示例中,我们利用TensorFlow构建了一个逻辑回归模型,通过最小化交叉熵损失函数来训练权重和偏置变量,并可视化训练的损失值。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:tensorflow基本操作小白快速构建线性回归和分类模型 - Python技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • 详解Python 定时框架 Apscheduler原理及安装过程

    详解Python 定时框架 Apscheduler原理及安装过程 简介 Apscheduler是Python中一个非常强大的定时任务框架。它支持基于时间、间隔、Cron表达式等多种方式触发任务,并且能够持久化任务,即使因为系统重启等原因导致程序中断,也能够恢复任务。本文将详细介绍Apscheduler的原理及安装过程,并给出两个示例说明。 安装 安装Apsc…

    人工智能概览 2023年5月25日
    00
  • IOS身份证识别(OCR源码)详解及实例代码

    IOS身份证识别(OCR源码)详解及实例代码 这篇攻略将详细介绍如何使用OCR技术来完成IOS身份证识别,并附带完整的示例代码。 OCR介绍 OCR(光学字符识别技术)可以让计算机理解并识别图片中的字符,从而将图片中的文字转换为计算机可读的文本。OCR技术已经得到广泛的应用,例如身份证、驾驶证、护照等证件的识别,银行卡、支票等金融单据的识别,图书、报纸、杂志…

    人工智能概论 2023年5月25日
    00
  • SpringCloud-Config分布式配置代码示例

    下面是“SpringCloud-Config分布式配置代码示例”的完整攻略。 一、SpringCloud-Config分布式配置介绍 SpringCloud-Config是SpringCloud体系中的一个组件,它提供了分布式系统中的外部配置支持,可以将项目中的配置抽取到外部的配置服务器中管理。这样,当我们修改配置时,不需要重新部署应用,只需要把新的配置信息…

    人工智能概览 2023年5月25日
    00
  • 在Django中创建第一个静态视图

    以下是在Django中创建第一个静态视图的完整攻略: 1. 创建Django项目和应用 首先,我们需要在本地创建一个Django项目。我们可以通过在命令行中输入以下命令来创建项目: django-admin startproject myproject 其中,myproject是项目的名称,你可以设置为任意你喜欢的名称。 接着,我们需要在项目中创建一个应用,…

    人工智能概览 2023年5月25日
    00
  • 如何使用bootstrap框架 bootstrap入门必看!

    如何使用 Bootstrap 框架 什么是 Bootstrap? Bootstrap 是一款由 Twitter 公司设计和开发的前端开发框架,它采用了 HTML、CSS、JavaScript 等技术,为开发者提供了大量的、可复用的 UI 组件和样式,使开发工作更加便捷和高效。 如何使用 Bootstrap? 步骤一:下载 Bootstrap 在开始使用 Bo…

    人工智能概览 2023年5月25日
    00
  • C++ OpenCV单峰三角阈值法Thresh_Unimodal详解

    C++ OpenCV单峰三角阈值法Thresh_Unimodal详解 介绍 本文主要讲解C++ OpenCV单峰三角阈值法Thresh_Unimodal的实现原理和使用方法。 单峰三角阈值法是一种图像二值化的方法,能够快速地将图像转换为黑白二值图像。 原理 单峰三角阈值法的实现原理是先对归一化直方图进行平滑处理,然后利用三角函数寻找直方图的峰值。找到峰值后,…

    人工智能概论 2023年5月24日
    00
  • Android实现扫一扫识别数字功能

    下面是针对“Android实现扫一扫识别数字功能”的完整攻略。 步骤一:添加ZXing库 下载并导入ZXing库。 在build.gradle文件中添加ZXing依赖 dependencies { implementation ‘com.google.zxing:core:3.3.3’ } 步骤二:添加扫码识别逻辑 在AndroidManifest.xml中…

    人工智能概论 2023年5月25日
    00
  • Python中线程的MQ消息队列实现以及消息队列的优点解析

    Python中线程的MQ消息队列实现以及消息队列的优点解析 什么是消息队列 消息队列是一种高效的消息传递机制,它可以将非实时的异步事件发送到MQ中再由消费者消费,避免了生产者和消费者之间的直接通信,提高了系统的可扩展性和可靠性。 Python中线程的MQ消息队列实现 在Python中,我们可以使用queue模块的Queue类来实现线程的MQ消息队列。在使用时…

    人工智能概览 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部