TensorFlow入门--张量运算进阶

第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 **********#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值