第1关
任务描述
本关任务:编写一个可以根据要求增加或减少张量维数的小程序。
编程要求
根据提示,在右侧编辑器补全change函数。change函数的作用是根据给定的操作,依次对tensor进行操作,之后返回操作的结果。
change函数有两个参数,tensor和action。tensor是输入的张量。action是表示动作的数组,其元素为整数。其元素(记为x)的含义为:
- 当x大于等于0时,表示要扩充第x维。
- 当x小于0时,表示要去掉第x维。
保证输入action中数据合法。
# -*- coding: utf-8 -*-
import tensorflow as tf
# 根据action中参数的值修改tensor的形状
# tensor是一个TensorFlow中的张量
# action是一个TensorFlow中的一维张量 (向量), 表示要对 tensor 进行操作的序列
# action的中的值 (记为x) 含义如下:
# 当x大于等于0时, 表示需要在 tensor 的第 x 维度增加一个维度.
# 当x小于0时, 表示需要去掉 tensor 的第 -x 维度 (输入数据保证合法).
# 返回修改形状后的张量.
def change(tensor,action):
# 请在此添加代码 完成本关任务
# ********** Begin *********#
action = action.eval()
for i in action:
if i >= 0:
tensor = tf.expand_dims(tensor, i)
else:
tensor = tf.squeeze(tensor, -i)
return tensor
# ********** End **********#
第2关
任务描述
本关任务:编写一个可以合成若干个张量的小程序。
编程要求
根据提示,在右侧编辑器补全packing函数,首先需要生成num个形状为shape的张量,然后将这num个张量沿着dim维进行合并,并返回合并后的结果。
输入数据保证合法。
# -*- coding: utf-8 -*-
import tensorflow as tf
# 根据参数生成相应的张量
# 首先需要生成num个形状为shape的张量, 之后使用stack方法让这num个张量沿dim维合并. 返回合并后的结果
# 参数类型说明:
# num为正整数
# dim为整数
# shape为numpy数组
def packing(num, dim, shape):
# 请在此添加代码 完成本关任务
# ********** Begin *********#
res = []
for i in range(0, num):
res.append(tf.ones(shape))
return tf.stack(res, dim)
# ********** End **********#
第3关
任务描述
本关任务:编写一个能判断两个张量中相等元素数量的小程序。
编程要求
根据提示,在右侧编辑器补全judge函数,返回张量x与张量y中的相同的元素个数。
提示:在使用equal方法获取张量x与张量y的结果矩阵后,可以使用reshape方法将结果矩阵重排为一维数组,就可以很方便地计数了。
# -*- coding: utf-8 -*-
import tensorflow as tf
# 返回张量x与张量y中的相同的元素个数
def judge(x, y):
# 请在此添加代码 完成本关任务
# ********** Begin *********#
Judge = tf.equal(x, y)
matrix = tf.reshape(Judge, [-1])
res = 0
for i in matrix.eval():
if i==True:
res += 1
return res
# ********** End **********#