第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个值都是这个传入的函数参数,然后给每个元素值加上该矩阵的对角元素之和,最后求出这个新矩阵的对角元素之和并返回。
编程要求
根据提示,在右侧编辑器补充代码,首先求出以参数为值的33的方阵,然后求出该矩阵的对角元素之和并逐个加到原方阵,最后返回新矩阵的对角元素之和。
提示:
- 矩阵相加可以用+直接实现;
- 最后返回值是标量而非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。
- 矩阵相加可以用+直接实现。
- 最后返回值是标量而非Tensor,需要用eval()函数取值。
- os.environ[“TF_CPP_MIN_LOG_LEVEL”]='3’代码是为了屏蔽Tensorflow输出的log,对本程序不会有影响。
- 此示例中数值类型无需用float32类型,用int即可。
- 求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))