Tensorflow入门--运算


一、Tensorflow基本运算

任务描述:

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

编程要求:

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

测试说明:
测试程序会使用测试集对你编写的代码进行测试:

  • 测试输入:

2 3 4 5

  • 预期输出:

45

  • 测试输入:

5 1 2 3

  • 预期输出:

30

# -*- 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 *********#
    A = tf.add(a,b)
    B = tf.add(c,d)
    result = tf.multiply(A,B).eval()
  
    # ********** 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))

二、Tensorflow常见矩阵操作

任务描述:

  • 本关任务:编写一个函数,该函数传入一个值,然后生成一个3*3的常量方阵,即该矩阵的9个值都是这个传入的函数参数,然后给每个元素值加上该矩阵的对角元素之和,最后求出这个新矩阵的对角元素之和并返回。

编程要求:

  • 根据提示,在右侧编辑器补充代码,首先求出以参数为值的3*3的方阵,然后求出该矩阵的对角元素之和并逐个加到原方阵,最后返回新矩阵的对角元素之和。

提示:

  • 矩阵相加可以用+直接实现;

  • 最后返回值是标量而非Tensor,需要用eval()函数取值。

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

  • 此示例中数值类型无需用float32类型,用int即可。

测试说明:
测试程序会使用测试集对你编写的代码进行测试:

  • 测试输入:2 预期输出:24

  • 测试输入:8 预期输出:96

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

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

def count_trace(a):
    '''
    返回值:
    result: 一个标量值
    '''
    # 请在此添加代码 完成本关任务
    # ********** Begin *********#
    # 以a为值的3*3矩阵
    A = tf.fill([3,3],a)
   
    B = tf.constant([[a,0,0],[0,a,0],[0,0,a]])

    B = tf.trace(B)
    C= A+B
    C=tf.trace(C)
    result =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))

三、Tensorflow数据广播机制

任务描述:

  • 本关任务:编写一个能计算数组平均值和最大值的小程序。

编程要求:

  • 根据提示,在右侧编辑器补充代码,要求实现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。

  • 矩阵相加可以用+直接实现。

  • 最后返回值是标量而非Tensor,需要用eval()函数取值。

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

  • 此示例中数值类型无需用float32类型,用int即可。

  • 求Tensor对角元素之和的api可以查阅本实训上个关卡。

测试说明:
测试程序会使用测试集对你编写的代码进行测试:

  • 测试输入:1 预期输出:18

  • 测试输入:3 预期输出:30

  • 测试输入:5 预期输出:42

# -*- 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])
    tensorb0 = tensor_a+tf.expand_dims(tensor_b,0)
    tensorb1 = tensor_a+tf.expand_dims(tensor_b,1)
    result = tf.trace(tensorb0 + tensorb1).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))

总结

本章转载自头歌实践作业,若有侵权,请告知必删

猜你喜欢

转载自blog.csdn.net/Alan_King79/article/details/122653168