张量、向量、标量的区别

标量是0阶张量(一个数),是1*1的;
向量是一阶张量,是1*n的;
张量可以给出所有坐标间的关系,是n*n的。
所以通常有人说将张量(n*n)reshape成向量(1*n),其实reshape过程中并没有发生大的变化。


这里写图片描述

这里写图片描述

这里写图片描述

除此之外,张量还可以是四维的、五维的。

参考地址:https://www.zhihu.com/question/22232943
https://www.jianshu.com/p/5ae644748f21

### 张量标量在 .NET 环境下的 Keras 中的详细概念及使用方法 张量(Tensor)是深度学习框架中的核心数据结构,用于表示输入数据、模型参数以及中间计算结果。在 Keras 中,张量是一个多维数组,可以包含任意数量的维度,而标量(Scalar)则是 0 维张量,仅包含一个数值。 在 .NET 环境下使用 Keras,通常是通过 TensorFlow.NET 或其他兼容接口实现的。TensorFlow.NET 提供了对 TensorFlow 的完整封装,使得 C# 开发者能够直接操作张量,并构建神经网络模型。Keras 的 `Input(shape=...)` 接口在 .NET 中同样适用,其作用是定义输入层的形状[^1]。 #### 标量(Scalar) 标量是单一数值,不具有任何维度。例如,在训练过程中,损失函数的输出通常是一个标量值,表示当前批次的误差大小。在 Keras 中可以通过以下方式创建标量张量: ```csharp var scalar = tf.constant(3.14f); ``` 该语句创建了一个浮点型标量常量,其值为 `3.14`。 #### 向量(Vector) 向量是一维张量,表示一组有序数值。例如,一维特征向量可以用作全连接网络的输入: ```csharp var vector = tf.constant(new float[] { 1.0f, 2.0f, 3.0f }); ``` 上述代码创建了一个长度为 3 的向量张量。 #### 矩阵(Matrix) 矩阵是二维张量,适用于表格型数据或图像处理中灰度图的表示: ```csharp var matrix = tf.constant(new float[,] { { 1.0f, 2.0f }, { 3.0f, 4.0f } }); ``` 该语句创建了一个 2x2 的矩阵张量。 #### 高阶张量 高阶张量指的是三维及以上维度的数据结构,常见于图像处理序列建模任务中。例如,彩色图像通常由三维张量 `(height, width, channels)` 表示: ```csharp var imageTensor = tf.constant(new float[32, 32, 3]); ``` 此代码定义了一个形状为 `(32, 32, 3)` 的张量,适用于 CIFAR-10 图像分类任务。 #### 输入层定义 在构建模型时,`Input(shape=...)` 用于指定输入张量的结构。在 .NET 环境中,可以通过如下方式定义输入层: ```csharp var inputs = Keras.Input(shape: (784,)); ``` 此语句定义了一个输入层,期望接收形状为 `(None, 784)` 的张量,其中 `None` 表示可变的批次大小,`784` 是每个样本的特征数量。这种输入形式通常用于扁平化的 MNIST 图像数据集。 对于卷积神经网络(CNN),输入层应保留原始的空间维度。例如,针对 CIFAR-10 数据集的彩色图像,输入层应定义为: ```csharp var inputImg = Keras.Input(shape: (32, 32, 3)); ``` 这表示模型将接受形状为 `(batch_size, 32, 32, 3)` 的输入数据。 #### 批次维度自动添加 无论何种类型的输入张量,所有输入的第一个维度始终是 `None`,表示允许任意数量的样本构成一个批次。这意味着实际输入数据的形状会比 `Input(shape=...)` 中定义的多出一个维度,即 `batch_size`。 #### 示例:构建简单模型 以下是在 .NET 环境中构建一个用于手写数字识别的简单全连接网络的示例代码: ```csharp using Keras.Models; using Keras.Layers; var model = new Sequential(); model.Add(Keras.Input(shape: (784,))); model.Add(Dense(128, activation: "relu")); model.Add(Dense(10, activation: "softmax")); model.Compile(optimizer: "adam", loss: "sparse_categorical_crossentropy", metrics: new string[] { "accuracy" }); ``` 该模型以 `(None, 784)` 形状的输入作为起点,依次经过两个全连接层,最终输出类别概率分布。 ###
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值