创建张量示例

星博讯 AI基础认知 1

TensorFlow 基础概念

核心概念

张量(Tensor)

  • 定义:TensorFlow 中的基本数据单位,类似于多维数组
  • 属性
    • 形状(shape):张量的维度,如 (2, 3) 表示 2行3列的矩阵
    • 数据类型(dtype):如 tf.float32, tf.int32, tf.string
    • 阶(rank):张量的维度数量,0阶是标量,1阶是向量,2阶是矩阵
# 标量(0阶张量)
scalar = tf.constant(3.0)
# 向量(1阶张量)
vector = tf.constant([1.0, 2.0, 3.0])
# 矩阵(2阶张量)
matrix = tf.constant([[1, 2], [3, 4]])

计算图(Computational Graph)

  • TensorFlow 1.x 的核心概念
  • 定义计算的结构,不立即执行
  • 包含节点(操作)和边(张量)
# TensorFlow 1.x 风格的计算图
# 注意:TensorFlow 2.x 默认使用 eager execution
graph = tf.Graph()
with graph.as_default():
    a = tf.constant(5)
    b = tf.constant(3)
    c = a + b

即时执行(Eager Execution)

  • TensorFlow 2.x 默认模式
  • 操作立即执行并返回结果
  • 更直观,便于调试
# TensorFlow 2.x 即时执行
x = tf.constant([[1, 2]])
y = tf.constant([[3], [4]])
z = tf.matmul(x, y)  # 立即执行
print(z)  # tf.Tensor([[11]], shape=(1, 1), dtype=int32)

主要组件

变量(Variable)

  • 用于存储模型参数
  • 训练过程中会被更新
  • 需要显式初始化
# 创建变量
w = tf.Variable(tf.random.normal([3, 2]))  # 权重矩阵
b = tf.Variable(tf.zeros([2]))            # 偏置向量
# 更新变量
w.assign(w * 2)  # 更新操作

操作(Operations)

  • 计算图中的节点
  • 可以是数学运算、数组操作等
# 常见操作
a = tf.constant([1, 2, 3])
b = tf.constant([4, 5, 6])
# 数学运算
add = tf.add(a, b)        # 加法
mul = tf.multiply(a, b)   # 乘法
# 神经网络相关操作
relu = tf.nn.relu(a)      # ReLU激活函数
softmax = tf.nn.softmax(a) # Softmax函数

关键模块

Keras API

  • TensorFlow 2.x 的高级API
  • 简化了模型构建过程
from tensorflow import keras
from tensorflow.keras import layers
# 创建模型
model = keras.Sequential([
    layers.Dense(64, activation='relu'),
    layers.Dense(10, activation='softmax')
])

tf.data

  • 数据输入管道
  • 高效处理大规模数据
# 创建数据集
dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3, 4, 5])
dataset = dataset.batch(2).shuffle(100)
# 迭代数据
for batch in dataset:
    print(batch)

自动微分(GradientTape)

  • 自动计算梯度
  • 用于自定义训练循环
# 使用 GradientTape 计算梯度
x = tf.Variable(3.0)
with tf.GradientTape() as tape:
    y = x**2
# 计算梯度
dy_dx = tape.gradient(y, x)  # dy/dx = 2x = 6

核心工作流程

模型构建

# 方法1:Sequential API
model = tf.keras.Sequential([
    tf.keras.layers.Dense(128, activation='relu'),
    tf.keras.layers.Dropout(0.2),
    tf.keras.layers.Dense(10)
])
# 方法2:Functional API
inputs = tf.keras.Input(shape=(32,))
x = tf.keras.layers.Dense(64, activation='relu')(inputs)
outputs = tf.keras.layers.Dense(10)(x)
model = tf.keras.Model(inputs=inputs, outputs=outputs)

模型编译

model.compile(
    optimizer='adam',                    # 优化器
    loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=True),
    metrics=['accuracy']                 # 评估指标
)

模型训练

history = model.fit(
    train_dataset,      # 训练数据
    epochs=5,           # 训练轮数
    validation_data=val_dataset  # 验证数据
)

模型评估与预测

# 评估
loss, accuracy = model.evaluate(test_dataset)
# 预测
predictions = model.predict(test_data)

重要工具

TensorBoard

  • 可视化工具
  • 监控训练过程
# 设置TensorBoard回调
tensorboard_callback = tf.keras.callbacks.TensorBoard(
    log_dir='./logs',
    histogram_freq=1
)
# 训练时使用
model.fit(..., callbacks=[tensorboard_callback])

模型保存与加载

# 保存整个模型
model.save('my_model')
# 加载模型
loaded_model = tf.keras.models.load_model('my_model')
# 保存权重
model.save_weights('model_weights.h5')

设备管理

# 检查可用设备
print(tf.config.list_physical_devices('GPU'))
# 手动设置设备
with tf.device('/GPU:0'):
    # 在GPU上执行操作
    a = tf.constant([1, 2, 3])

版本差异

特性 TensorFlow 1.x TensorFlow 2.x
执行模式 图模式为主 即时执行为主
API 较低级,较分散 统一为Keras API
变量定义 tf.Variable + tf.placeholder tf.Variable
会话 需要显式会话 不需要会话

学习建议

  1. 从 TensorFlow 2.x 开始学习:更简单直观
  2. 先掌握基本概念:张量、变量、操作
  3. 使用 Keras API:简化模型构建
  4. 实践为主:通过实际项目加深理解
  5. 利用官方文档和教程:TensorFlow官网有丰富的学习资源

这些基础概念是深入理解和使用 TensorFlow 的基石,建议在实际编码中不断练习和巩固。

创建张量示例-第1张图片-星博讯网络科技知识-SEO优化技巧|AI知识科普|互联网行业干货大全

标签: 张量 示例

抱歉,评论功能暂时关闭!

微信咨询Xboxun188
QQ:1320815949
在线时间
10:00 ~ 2:00