tensorflow: a Implementation of rotation operation (旋转的函数实现方法)

本文介绍了在TensorFlow中如何实现旋转操作,特别是在4D张量[B,W,H,C]情况下。由于TensorFlow官方未直接提供rot90函数,作者参照numpy的rot90方法,结合TensorFlow的矩阵翻转、转置和切片操作,自定义了一个适用于TensorFlow的rot90实现,并提供了测试代码和结果。" 122306113,9979918,Linux找不到my.cnf的解决步骤,"['Linux', '数据库', 'MySQL', '服务器管理', '配置']

tensorflow: a Implementation of rotation operation (旋转的函数实现方法)

关键字: rot90, tensorflow

问题描述

tensorflow对tensor的翻转操作并未实现, 仅有针对3D tensor的tf.image.rot()
而在大多数的情况下使用的是4D形式的tensorf, [B,W,H,C]. 但是通过查看这篇文章的代码可以知道1 可以使用numpy的rot90()函数旋转, 但是rot90对象
是ndarray, 针对tensorflow.tensor对象而言显然是无法使用的, 会抛出类似: 无法找到m.dim属性的异常.
已知, tensorflow中提供有对矩阵的翻转, 转置,切片操作的函数,但是没有提供旋转90°, 180°,270°的操作.
因此有必要去自己动手实现.

于是根据numpy.rot90(m, k=1, axes=(0,1)) ,进行了修改. rot90中的第一个参数m是操作对象, k是旋转的次数,k=1 代表逆时针旋转90度, k=2 代表逆时针旋转180度,以此类推
axes是代表操作的平面在第几个维度上.

rot90的源代码如下:

def rot90(m, k=1, axes=(0,1)):
    '''
    ......
    '''
    # 省略检测参数的操作
    k %= 4

    if k == 0:
        return m[:]
    if k == 2:
        return flip(flip(m, axes[0]), axes[1])

    axes_list = arange(0, m.ndim)
    (axes_list[axes[0]], axes_list[axes[1]]) = (axes_list[axes[1]],
                                                axes_list[axes[0]])

    <
在 Gradle 中,`implementation` 是一种依赖配置,用于声明项目运行时所需的依赖库。以下是对 `implementation('org.tensorflow:tensorflow - lite:0.0.0 - nightly') { changing = true }`、`implementation('org.tensorflow:tensorflow - lite - gpu:0.0.0 - nightly') { changing = true }` 和 `implementation('org.tensorflow:tensorflow - lite - support:0.0.0 - nightly') { changing = true }` 的详细解释: #### `implementation` `implementation` 是 Gradle 中的一种依赖配置,用于声明项目运行时所需的依赖库。使用 `implementation` 声明的依赖,仅在当前模块中可见,不会传递给依赖该模块的其他模块。这有助于减少不必要的依赖传递,提高构建性能。 #### `org.tensorflow:tensorflow - lite:0.0.0 - nightly` 这是 TensorFlow Lite 库的依赖声明。`org.tensorflow` 是组织名称,`tensorflow - lite` 是库的名称,`0.0.0 - nightly` 是版本号。`nightly` 通常表示这是每日构建的版本,可能包含最新的功能和修复,但也可能不太稳定。 #### `changing = true` `changing = true` 表示该依赖是一个动态版本,Gradle 在每次构建时都会检查是否有新版本可用,并尝试下载最新版本。对于像 `0.0.0 - nightly` 这样的每日构建版本,使用 `changing = true` 可以确保每次构建都使用最新的版本。 #### 完整含义 - `implementation('org.tensorflow:tensorflow - lite:0.0.0 - nightly') { changing = true }`:声明使用 TensorFlow Lite 库的每日构建版本,并在每次构建时检查是否有新版本可用。 - `implementation('org.tensorflow:tensorflow - lite - gpu:0.0.0 - nightly') { changing = true }`:声明使用 TensorFlow Lite GPU 加速库的每日构建版本,并在每次构建时检查是否有新版本可用。 - `implementation('org.tensorflow:tensorflow - lite - support:0.0.0 - nightly') { changing = true }`:声明使用 TensorFlow Lite 支持库的每日构建版本,并在每次构建时检查是否有新版本可用。 ### 示例代码 ```groovy dependencies { implementation('org.tensorflow:tensorflow - lite:0.0.0 - nightly') { changing = true } implementation('org.tensorflow:tensorflow - lite - gpu:0.0.0 - nightly') { changing = true } implementation('org.tensorflow:tensorflow - lite - support:0.0.0 - nightly') { changing = true } } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值