Google TensorFlow课程 编程笔记(1)

疑问点1:
  • b = tf.constant([4, 6, 3])这个矢量的形状表示为什么?
        疑问出现背景:

疑问拓展:b变形为[1,3]的new_b,既从 [4 6 3]变形为[[4 6 3]]这两个形状有何区别,是否均为一列三行?
new_b有没有办法变形回b,实测将形状修改为[0,3]会出现错误?

问题解决:

疑问点1:b = tf.constant([4, 6, 3])这个矢量的形状表示为什么?

答:这是一个向量,只有是一个一维数组,在TensorFlow里无法使用reshape指令改成成这个形状。因为TensorFlow处理数据的单位是张量(即tensor,所以才叫TensorFlow)。所以此处进行乘法运算之前要先将b = tf.constant([4, 6, 3])这个向量改变成一个张量,然后再和其他张量进行运算。所以b = tf.constant([4, 6, 3])需要整形成[1,3],即[ [ 4,6,3] ](这即是一个张量的形状)



————————————————————————————————————————————————


练习二:

暂无疑问点


练习记录:



附录:
疑问点1程序文本:
with tf.Graph().as_default(), tf.Session() as sess:
  a = tf.constant([5, 3, 2, 7, 1, 4])
  b = tf.constant([4, 6, 3])
  new_a = tf.reshape(a, [6,1])
  new_b = tf.reshape(b, [1,3])
  multiply_result = tf.matmul(new_a, new_b)
  
  #print multiply_result.eval()
  #print new_a.eval()
  print(a.eval())
  print(b.eval())
  print(new_a.eval())
  print(new_b.eval())
  print(multiply_result.eval())

练习2的程序文本:
with g.as_default():
  with tf.Session() as sess:
    dice1 = tf.Variable(tf.random_uniform([10, 1],#定义骰子1
                                        minval=1, maxval=7,
                                        dtype=tf.int32))
    dice2 = tf.Variable(tf.random_uniform([10, 1],#定义骰子2
                                        minval=1, maxval=7,
                                        dtype=tf.int32))
    dice_sum = tf.add(dice1,dice2)#计算和
    
    resulting= tf.concat(values=[dice1, dice2, dice_sum], axis=1)#连接三个数组,axis为矢量的维度1表示为2维矢量
    sess.run(tf.global_variables_initializer())#所有变量初始化
    print(resulting.eval())


课程地址:https://developers.google.cn/machine-learning/crash-course/

练习地址:https://colab.research.google.com/notebooks/mlcc/creating_and_manipulating_tensors.ipynb?hl=zh-cn

关键词:向量,张量,变形,TensorFlow,reshape



猜你喜欢

转载自blog.csdn.net/latioas/article/details/80166226