【Tensorflow】tf.dynamic_partition 函数 分拆数组

本文介绍了TensorFlow中dynamic_partition函数的使用方法,并通过一个具体示例展示了如何将Tensor按照指定的分区条件进行拆分。此外,还提供了C++接口方式的函数定义。
部署运行你感兴趣的模型镜像

拆分Tensor: dynamic_partition(data, partitions, num_partition, name=None)

Tensorflow中文社区提供的展示:

实例

# -*- coding:utf-8 -*-
import tensorflow as tf

x1 = tf.constant([[1,1],[1,1],[1,2],[1,2]], tf.float32)
x2 = tf.constant([[1,3],[1,2],[2,3],[2,4]], tf.float32)

#ones = tf.ones([2,1], dtype=tf.float32)
partitions = [1,0,1,0]

result = tf.dynamic_partition(x1, partitions, 2)

with tf.Session() as sess:
    r = sess.run(result)
    print r[0]

结果

[[ 1.  1.]
 [ 1.  2.]]


C++接口方式

DynamicPartition(const ::tensorflow::Scope & scope, ::tensorflow::Input data, ::tensorflow::Input partitions, int64 num_partitions)



您可能感兴趣的与本文相关的镜像

TensorFlow-v2.15

TensorFlow-v2.15

TensorFlow

TensorFlow 是由Google Brain 团队开发的开源机器学习框架,广泛应用于深度学习研究和生产环境。 它提供了一个灵活的平台,用于构建和训练各种机器学习模型

<think> 我们被要求解释StarRocks中动态分区的相关参数配置。这些参数用于定义表的分区行为,特别是动态创建和管理分区。 下面逐条解释每个参数的含义: 1. `"replication_allocation" = "tag.location.default: 3"` 含义:设置表的默认副本数为3。即数据在集群中默认会保留3个副本,用于容错。 2. `"dynamic_partition.enable" = "true"` 含义:启用动态分区功能。开启后,系统会根据配置自动创建和管理分区。 3. `"dynamic_partition.time_unit" = "DAY"` 含义:动态分区的时间单位为天。表示分区将按天进行创建和管理。 4. `"dynamic_partition.time_zone" = "Asia/Shanghai"` 含义:动态分区使用的时区为亚洲/上海时区(即东八区)。这会影响分区名称的日期计算。 5. `"dynamic_partition.start" = "-369"` 含义:动态分区的开始时间偏移。表示从当前时间开始,向前推369天(即1年零4天左右)的分区会被创建。注意,负号表示过去的时间。 6. `"dynamic_partition.end" = "3"` 含义:动态分区的结束时间偏移。表示从当前时间开始,向后推3天的分区会被创建。正数表示未来的时间。 7. `"dynamic_partition.prefix" = "p"` 含义:动态分区的前缀。创建的分区名称将以"p"开头,后面跟日期。例如:p20210101。 8. `"dynamic_partition.replication_allocation" = "tag.location.default: 3"` 含义:动态分区的副本分配,这里也设置为3个副本。如果单独设置,则动态创建的分区使用此副本数;若不设置,则使用表的默认副本数(即第一个参数)。 9. `"dynamic_partition.buckets" = "2"` 含义:动态创建的分区的分桶数量为2。即每个分区会被分成2个桶(bucket)。 10. `"dynamic_partition.create_history_partition" = "false"` 含义:是否创建历史分区。设置为false,表示不自动创建历史分区(历史分区指在动态分区功能开启之前的分区)。 11. `"dynamic_partition.history_partition_num" = "-1"` 含义:保留的历史分区数量。设置为-1表示不限制,但根据前面的`create_history_partition=false`,这里不会自动创建历史分区,所以此参数可能不生效或保留所有已有历史分区。 12. `"dynamic_partition.hot_partition_num" = "0"` 含义:保留的热分区数量。热分区是指最近的分区。这里设置为0,表示不额外保留超出动态分区时间范围的热分区。通常,热分区的设置是为了防止最近的分区被删除,但这里设置为0,则按照start和end的范围管理。 13. `"dynamic_partition.reserved_history_periods" = "NULL"` 含义:保留历史分区的特殊周期。设置为NULL,表示没有需要额外保留的历史分区周期。如果设置,比如可以设置"2020-01-01,2020-01-02",则这些时间段内的分区会被保留,即使不在动态分区的范围内。 综合解释: 该表启用了动态分区,按天分区,使用上海时区。分区范围从当前时间前369天到未来3天(总共约372天的分区)。分区名称前缀为"p",每个分区2个桶,副本数为3。不自动创建历史分区,不保留额外的热分区,也没有特殊保留的历史分区周期。 注意:动态分区功能会在每天调度时自动创建新的分区(当需要时)以及删除过期的分区(超出`start`范围的分区,即比当前时间减去369天还要早的分区会被删除)。 §§相关问题§§ 1. 如果动态分区范围设置为`"start" = "-30", "end" = "10"`,那么实际保留的分区时间范围是多少? 2. 动态分区功能在什么时间点触发创建新分区和删除旧分区? 3. 如何手动添加一个不在动态分区配置范围内的分区? 4. 当动态分区配置修改后(例如修改`start`或`end`),系统如何响应? 5. 如果动态分区创建失败,可能的原因有哪些? </think> 在StarRocks中,这些参数用于配置**动态分区功能**,主要用于自动管理分区表的分区创建和删除。以下是详细解释: ### 核心参数解析 1. **`"replication_allocation" = "tag.location.default: 3"`** - **含义**:设置表默认的副本数为3份,数据会在集群不同节点存储3份副本,提高容灾能力。 2. **`"dynamic_partition.enable" = "true"`** - **含义**:启用动态分区功能,系统自动按规则管理分区生命周期。 --- ### 动态分区配置组 3. **`"dynamic_partition.time_unit" = "DAY"`** - **含义**:分区按**天**为单位创建(可选:HOUR/WEEK/MONTH)。 4. **`"dynamic_partition.time_zone" = "Asia/Shanghai"`** - **含义**:使用上海时区计算分区时间(避免时区偏差导致分区错误)。 5. **`"dynamic_partition.start" = "-369"`** - **含义**:自动创建**当前时间前369天**的分区(负值表示过去时间)。 6. **`"dynamic_partition.end" = "3"`** - **含义**:自动创建**当前时间后3天**的分区(正值表示未来时间)。 7. **`"dynamic_partition.prefix" = "p"`** - **含义**:分区名前缀为`p`,例如分区命名为`p20240101`。 8. **`"dynamic_partition.replication_allocation" = "tag.location.default: 3"`** - **含义**:动态分区的副本数独立配置为3份(覆盖表级默认值)。 9. **`"dynamic_partition.buckets" = "2"`** - **含义**:每个动态分区的存储分桶数量为2个(影响数据分布和查询并行度)。 --- ### 历史分区管理 10. **`"dynamic_partition.create_history_partition" = "false"`** - **含义**:**不自动创建历史分区**(开启后首次启用时会补建历史分区)。 11. **`"dynamic_partition.history_partition_num" = "-1"`** - **含义**:保留**所有历史分区**(`-1`表示不限制,正数如`10`表示保留最近10个分区)。 12. **`"dynamic_partition.hot_partition_num" = "0"`** - **含义**:不设置特殊热分区(若设为`2`,则最近2个分区会被标记为"热分区"优先缓存)。 13. **`"dynamic_partition.reserved_history_periods" = "NULL"`** - **含义**:**不保留特定时间段的历史分区**(可设如`"20230101,20231231"`保留该时段分区)。 --- ### 功能示例 假设当前日期为`2025-01-10`,配置生效后: - **自动创建分区**:从`2025-01-10 - 369天 ≈ 2024-01-06` 到 `2025-01-13` 的分区(前缀为`p`) - **自动清理**:早于`2024-01-06`的分区会被删除(因`start=-369`且未设置保留周期) - **存储结构**:每个分区有2个分桶,每个分桶存3副本
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值