Tensorflow入门之运算篇

第1关 Tensorflow基本运算

任务描述
本关任务:编写一个函数,该函数有四个零阶Tensor参数,要求该函数使用Tensorflow的API先对它们两两求和,然后对和进行乘积计算。

编程要求
根据提示在右侧编辑器补全代码函数,这个函数以四个零阶Tensor为参数,然后两两求和后进行乘积。即假设输入为a、b、c、d,返回值为(a+b)* (c+d)。

提示:

  • os.environ[“TF_CPP_MIN_LOG_LEVEL”]='3’代码是为了屏蔽Tensorflow输出的log,对本程序不会有影响。

  • 编写程序时需要用tf.constant Op创建常量Op,然后使用运算符Op计算返回结果。

  • 输出是一个标量,不是Tensor,需要调用eval()取值。

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

os.environ["TF_CPP_MIN_LOG_LEVEL"]='3'

def simple_func(a,b,c,d):
    '''
    返回值:
    result: 一个标量值
    '''
    # 请在此添加代码 完成本关任务
    # ********** Begin *********#
    r1 = tf.add(a, b).eval()
    r2 = tf.add(c, d).eval()
   
    result = r1 * r2

    # ********** End **********#

    # 返回result

    return result

a = int(input())
b = int(input())
c = int(input())
d = int(input())

init_op = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init_op)
    print(simple_func(a,b,c,d))

第2关 Tensorflow常见矩阵操作

任务描述
本关任务:编写一个函数,该函数传入一个值,然后生成一个33的常量方阵,即该矩阵的9个值都是这个传入的函数参数,然后给每个元素值加上该矩阵的对角元素之和,最后求出这个新矩阵的对角元素之和并返回。
编程要求
根据提示,在右侧编辑器补充代码,首先求出以参数为值的3
3的方阵,然后求出该矩阵的对角元素之和并逐个加到原方阵,最后返回新矩阵的对角元素之和。

提示:

  • 矩阵相加可以用+直接实现;
  • 最后返回值是标量而非Tensor,需要用eval()函数取值。
  • os.environ[“TF_CPP_MIN_LOG_LEVEL”]='3’代码是为了屏蔽Tensorflow输出的log,对本程序不会有影响。
  • 此示例中数值类型无需用float32类型,用int即可。
# -*- coding: utf-8 -*-
import tensorflow as tf
import os

os.environ["TF_CPP_MIN_LOG_LEVEL"]='3'

def count_trace(a):
    '''
    返回值:
    result: 一个标量值
    '''
    # 请在此添加代码 完成本关任务
    # ********** Begin *********#
    A = tf.fill([3, 3], a)
    temp = a * 3
    B = tf.fill([3, 3], temp)
    C = A + B
    result = tf.trace(C).eval()

    # ********** End **********#
    # 返回result
    return result

init_op = tf.global_variables_initializer()
a = int(input())

with tf.Session() as sess:
    sess.run(init_op)
    print(count_trace(a))

第3关 Tensorflow数据广播机制

任务描述
本关任务:编写一个使用广播机制求Tensor的对角值之和的小程序。
编程要求
根据提示,在右侧编辑器补充代码,要求实现broad_cast函数,该函数传入一个参数t,首先先生成一个值为[t,2t]的一阶Tensor,然后tensor_a分别和这个一阶Tensor使用0的广播尺寸和使用1的广播尺寸相加,分别形成两个新的Tensor,接着让这两个新Tensor相加,求出最终相加后Tensor的对角值之和。

举个例子,假设传入的参数是1,则会生成一个[1,2]的一阶Tensor,然后tensor_a分别和这个一阶Tensor使用0的广播尺寸和使用1的广播尺寸相加,即:

|1 3|   |1 2|      |2 5|
      +         = 
|4 5|   |1 2|      |5 7|        
                          + ==> |4   9|
|1 3|   |1 1|      |2 4|        |11 14|
      +         =  
|4 5|   |2 2|      |6 7|

然后上面矩阵对角线元素之和为18(即14+4),在这个例子中,输入为1,输出为18。

  1. 矩阵相加可以用+直接实现。
  2. 最后返回值是标量而非Tensor,需要用eval()函数取值。
  3. os.environ[“TF_CPP_MIN_LOG_LEVEL”]='3’代码是为了屏蔽Tensorflow输出的log,对本程序不会有影响。
  4. 此示例中数值类型无需用float32类型,用int即可。
  5. 求Tensor对角元素之和的api可以查阅本实训上个关卡。
# -*- coding: utf-8 -*-
import tensorflow as tf
import os

os.environ["TF_CPP_MIN_LOG_LEVEL"]='3'

def broad_cast(t):
    tensor_a = tf.constant([[1, 3], [4, 5]])
    '''
    返回值:
    result: 一个标量值
    '''
    # 请在此添加代码 完成本关任务
    # ********** Begin *********#
    tensor_b = tf.constant([t, 2*t])
    tensor_c = tensor_a + tensor_b

    tensor_bb = tf.expand_dims(tensor_b, 1)
    tensor_d = tensor_a + tensor_bb

    result = tf.trace(tensor_c + tensor_d).eval() 
    # ********** End **********#
    # 返回result
    return result

init_op = tf.global_variables_initializer()

a = int(input())
with tf.Session() as sess:
    sess.run(init_op)
    print(broad_cast(a))

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值