【Tensorflow】Tensor的比较运算

【fishing-pan:https://blog.csdn.net/u013921430 转载请注明出处】

测试环境:Tensorflow 1.7.0、Tensorflow 1.14.0

Tensor 的比较运算

  在Tensorflow中提供了六个Tensor大小比较的函数分别如下;其中,第一个参数是比较符号前的Tensor,第二个是符号后的Tensor。

compa=tf.less(A,B)             ##  <
compa=tf.greater(A,B)         ##  >
compa=tf.greater_equal(A,B)   ##  >=
compa=tf.less_equal(A,B)      ##  <=
compa=tf.equal(A,B)           ##  ==
compa=tf.not_equal(A,B)       ##  !=

  以 tf.less() 函数为例,它返回的是一个shape与输入的Tensor相同的tf.bool类型的Tensor,并且要求输入Tensor的shape必须一致,且类型必须以下类型中一种;

`float32`, `float64`, `int32`, `uint8`, `int16`, `int8`, `int64`, 
`bfloat16`, `uint16`, `half`, `uint32`, `uint64`.

  而在numpy中也有同名的函数与这些函数一一对应,但是往往我们都直接使用运算符进行比较。
  其实Tensorflow也支持 &gt; &gt; > &lt; &lt; < &lt; = &lt;= <= &gt; = &gt;= >= 四种运算符,但是另外的 == \textbf{==} == != \textbf{!=} != 运算符的功能与Python中的却不同,他们的功能与Python中的 is is not 相同,是用于判断被比较的两个参数是否是同一个量,他们返回的不再是Tensor,也不是数组,而是普通的bool类型的量。

测试代码&输出

  测试代码和输出分别如下

import tensorflow as tf
import numpy as np

A=tf.constant([[20,20],[10,15]],dtype=tf.int8,shape=[2,2])
B=tf.constant([[20,20],[10,10]],dtype=tf.int8,shape=[2,2])

C=(A==B)
compa=tf.equal(A,B)             ##  <

B_=B
C_=(B_==B)

#compa=tf.greater(A,B)         ##  >
#compa=tf.greater_equal(A,B)   ##  >=
#compa=tf.less_equal(A,B)      ##  <=
#compa=tf.equal(A,B)           ##  ==
#compa=tf.not_equal(A,B)       ##  !=


with tf.Session() as sess:
    print('A is equal to B ?:',sess.run(compa))

    
print('A == B ?:  ',C)
print('B_ == B?:  ',C_)
    
D=np.array([20,20],dtype=np.int)
E=np.array([20,20],dtype=np.int)

F=(D is not E)
print('D is not E?:  ',F)

测试输出
在这里插入图片描述

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TensorFlow 提供了多种方式来自动调用多个 GPU 参与运算,其中最常用的方式是通过使用 `tf.distribute` 模块中的分布式策略来实现。 以下是使用分布式策略自动调用多个 GPU 参与运算的步骤: 1. 导入 TensorFlow 和分布式策略模块: ```python import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers ``` 2. 定义模型: ```python def get_model(): inputs = keras.Input(shape=(784,)) x = layers.Dense(512, activation='relu')(inputs) x = layers.Dense(256, activation='relu')(x) x = layers.Dense(10, activation='softmax')(x) model = keras.Model(inputs, x) return model ``` 3. 定义分布式策略: ```python strategy = tf.distribute.MirroredStrategy() ``` 4. 在分布式策略下创建模型: ```python with strategy.scope(): model = get_model() ``` 5. 编译模型: ```python model.compile(loss='sparse_categorical_crossentropy', optimizer=keras.optimizers.SGD(), metrics=['accuracy']) ``` 6. 加载数据: ```python (x_train, y_train), (x_test, y_test) = keras.datasets.mnist.load_data() x_train = x_train.reshape(-1, 784).astype('float32') / 255.0 x_test = x_test.reshape(-1, 784).astype('float32') / 255.0 y_train = y_train.astype('float32') y_test = y_test.astype('float32') ``` 7. 定义训练参数: ```python train_dataset = tf.data.Dataset.from_tensor_slices((x_train, y_train)).shuffle(10000).batch(64) test_dataset = tf.data.Dataset.from_tensor_slices((x_test, y_test)).batch(64) ``` 8. 训练模型: ```python model.fit(train_dataset, epochs=10) ``` 在上述代码中,`tf.distribute.MirroredStrategy()` 创建了一个镜像策略,该策略会自动将模型复制到所有可用的 GPU 上,并在每个 GPU 上运行模型的一个副本。`with strategy.scope():` 语句将模型包装在策略的上下文中,以便可以自动调用多个 GPU 进行训练。`model.fit()` 方法用于训练模型。在使用分布式策略的情况下,可以像使用单个 GPU 进行训练一样使用该方法。 通过上述步骤,可以轻松地自动调用多个 GPU 参与 TensorFlow 运算

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值