educoder TensorFlow技术与平台应用

一、什么是TensorFlow?

TensorFlow是一个采用数据流图(Data Flow Graphs),用于高性能数值计算的开源软件库。
Tensor(张量):即多维数组,是TensorFlow中数据表现的形式。Flow:基于数据流图(Data Flow Graphs)的计算。
Data Flow Graph用结点和线的有向图来描述数学计算。节点通常代表数学运算,边表示节点之间的某种联系,它负责传输多维数据(Tensors)。
计算图只是定义了这个计算

w = tf.constant(2.)
x = tf.constant(3.)
b = tf.constant(5.)
y = tf.add(tf.multiply(w,x),b,name='y')

会话 让定义后的计算图运行起来

**第一种书写:**
    # 创建一个Session
    sess = tf.Session()
    # 让c这个Tensor动起来,并打印c这个Tensor动起来之后的值
    print(sess.run(c))
    # 关闭Session
    sess.close()
    
 **第二种书写**
    with tf.Session() as sess:
    print(sess.run(y)

二、 相关知识点

1、tf.constant、tf.Variable 和 tf.placeholder的区别

(1)常量节点tf.constant:它的value值可以为一个数值也可以为一个列表
(2)变量节点tf.Variable:它可以用来存储图执行过程中需要更新的量,在神经网络中用来储存权重值
(3)tf.Variable 和 tf.placeholder的区别:两者都可以盛放变量,但在启动会话前,tf.Variable必须先被赋值和初始化,而tf.placeholder是需要在启动会话的时候传入值的;从直观上讲,tf.placeholder更加接近函数的形参。

import tensorflow as tf
w1 = tf.Variable(tf.truncated_normal([2,3],seed=1))
w2 = tf.Variable(tf.truncated_normal([3,1],seed=1))
 
x = tf.placeholder(dtype=tf.float32,shape=[1,2]) #在placeholder中,必须先指定dtype的数据类型。
 
a = tf.matmul(x,w1)
y = tf.matmul(a,w2)
 
with tf.Session() as sess:
    sess.run(tf.global_variables_initializer())
    print (sess.run(y,feed_dict={x:[[1,1]]}))  #由于x的结构为1*2的矩阵,所以应当传入[[1,1]];而不能传入[1,1]
    print (w1) # 这里可以看出,w1的数据类型默认为 tf.float32,因此x的数据类型也应当为float32,若两者数据类型不同,则会有 TypeError报错。

三、代码报错

(1)ValueError: Dimensions must be equal, but are 784 and 10 for ‘add’ (op: ‘Add’) with input shapes: [784,784], [10].

出现这种错误一般就是输入,输出矩阵,和 tf.matmul(weight, x) + bias 计算中矩阵不能相乘所造成的
matmul(weight, x)函数表示行数为weight,列数为x的矩阵
说白了就是矩阵相乘维度不一致导致,

四、educoderTensorFlow技术与平台应用答案

第1关:Hello,Tensorflow

#********* Begin *********#
import tensorflow as tf
#使用tf.constant()函数在图中创建一个常量Tensor
c=tf.constant("Hello World")
# 创建一个Session
sess=tf.Session()
# 让c这个Tensor动起来,并打印c这个Tensor动起来之后的值
print(sess.run(c))
# 关闭Session
#sess.close()

#********* End *********#

第2关:计算图与会话

# -*- coding: utf-8 -*-
import tensorflow as tf
import numpy as np

def matmul(a,b):
    '''
    a(list):矩阵a
    b(list):矩阵b
    result(ndarray):矩阵相乘结果
    '''
    #********* Begin *********#
    #常量节点tf.constant可为列表和常数
    #常量节点tf.ones可为矩阵
    #变量节点tf.Variable:它可以用来存储图执行过程中需要更新的量;在神经网络中用来储存权重值,
    v1=tf.constant(a)
    v2=tf.constant(b)

    ndarray=tf.matmul(v1,v2)

    with tf.Session() as sess:
        result=sess.run(ndarray)
   
    #********* End *********#
    return result
    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值