发新帖

小白 feed_dict 学习笔记

[复制链接]
174 4

快来加入 TensorFlowers 大家庭!

您需要 登录 才可以下载或查看,没有帐号?加入社区

x

feed_dict

个人理解:就是TF的一种输入语法。

跟C语言的scanf(),C++的 cin>> 意思差不多,只是长相奇怪了点而已。

做完下面几个例子,基本也就适应了。

首先占位符申请空间;使用的时候,通过占位符“喂(feed)”给程序。然后程序就可以run了。。。

理解的不一定对,也不够深入,仅供参考。

import tensorflow as tf
  • tf.placeholder 占位符
  • tf.Session 会话

1. 输出 Hello World

Str = tf.placeholder(tf.string)

with tf.Session() as sess:
    output = sess.run(Str, feed_dict={Str: 'Hello World !'})
    print(output)
Hello World !

2.字符串拼接

Str1 = tf.placeholder(tf.string)
Str2 = tf.placeholder(tf.string)
Str3 = tf.placeholder(tf.string)

Str = tf.string_join([Str1, Str2, Str3], separator=" ") 

with tf.Session() as sess:
    output = sess.run(Str, feed_dict={Str1: 'I', Str2: 'like', Str3: 'TensorFlow !'})
    print(output.decode())
I like TensorFlow !

3.浮点数乘积

Num1 = tf.placeholder(tf.float32)
Num2 = tf.placeholder(tf.float32)

Result = tf.multiply(Num1, Num2)

with tf.Session() as sess:
    print(sess.run(Result, feed_dict={Num1:[5.],Num2:[6.]}))
[ 30.]

4.不用占位符,而用常量,也可完成。

只是验证一下,不推荐使用。初始化时的常量值将会被覆盖。

Num1 = tf.constant(1.0)
Num2 = tf.constant(2.0)

Result = tf.multiply(Num1, Num2)

with tf.Session() as sess:
    print (sess.run(Result, feed_dict = {Num1: 5., Num2: 6.}))
30.0

5.矩阵乘法

顺道学点新东西

定义两个矩阵,分别为 2*3 和 3*2矩阵,完成乘法运算

Matrix1 = tf.Variable(tf.random_normal([2,3]))  
Matrix2 = tf.Variable(tf.truncated_normal([3,2]))  

Result = tf.matmul(Matrix1,Matrix2)  

with tf.Session() as sess:  
    sess.run(tf.global_variables_initializer()) 
    print ('Matrix1:')
    print (sess.run(Matrix1)) 
    print ('Matrix2:')
    print (sess.run(Matrix2)) 
    print ('Result:')
    print (sess.run(Result)) 
Matrix1:
[[-1.00879586  0.61892986 -0.39552122]
 [-0.83463311 -0.54309726 -0.31309164]]
Matrix2:
[[ 1.35596943  0.67712855]
 [-0.09836598 -0.41533285]
 [ 0.20601694 -0.14825489]]
Result:
[[-1.51026201 -0.88150841]
 [-1.14281678 -0.29317039]]

使用 feed_dict完成矩阵乘法

表达看上去更繁琐。。。对比一下是为了更好地理解feed_dict。。。

Matrix1_Value = tf.random_normal([2,3])
Matrix2_Value = tf.truncated_normal([3,2])

Matrix1 = tf.placeholder(dtype=tf.float32,shape=[2,3]) 
Matrix2 = tf.placeholder(dtype=tf.float32,shape=[3,2])   

Result = tf.matmul(Matrix1,Matrix2)  

with tf.Session() as sess:  
    sess.run(tf.global_variables_initializer()) 
    print ('Matrix1:')
    print (sess.run(Matrix1_Value)) 
    print ('Matrix2:')
    print (sess.run(Matrix2_Value)) 
    print ('Result:')
    print (sess.run(Result,feed_dict={Matrix1:sess.run(Matrix1_Value),Matrix2:sess.run(Matrix2_Value)}))  
Matrix1:
[[-0.6228959   0.04135797 -0.76592982]
 [ 0.04814498 -0.98519218 -0.88335162]]
Matrix2:
[[-0.73028505  0.62314421]
 [-0.64763296 -0.18691106]
 [ 0.0198773   0.68467569]]
Result:
[[-1.66321826 -2.89716744]
 [ 1.28906226  2.08242035]]
本楼点评(0) 收起

精彩评论4

从入门到放弃  TF荚荚  发表于 2018-4-15 00:48:56 来自手机  | 显示全部楼层
写的不错。字词一下
本楼点评(0) 收起
舟3332  TF芽芽  发表于 2018-4-15 09:25:58 来自手机  | 显示全部楼层
赞赞赞。一个小问题。为什么 Feed dict 不能输入一个 tensor 呀?
本楼点评(1) 收起
  • crayfish错误提示是:Expected DataType for argument 'dtype' not <class 'tensorflow.python.framework.ops.Tensor'>.
    2018-4-15 10:59 回复
crayfish  TF荚荚  发表于 2018-4-15 10:05:57 来自手机  | 显示全部楼层
舟3332 发表于 2018-4-15 09:25
赞赞赞。一个小问题。为什么 Feed dict 不能输入一个 tensor 呀?

我一会儿开电脑试试,看看置入张量提示什么
本楼点评(0) 收起
刘达  TF荚荚  发表于 2018-4-15 11:12:44 来自手机  | 显示全部楼层
本楼点评(0) 收起
您需要登录后才可以回帖 登录 | 加入社区

本版积分规则

快速回复 返回顶部 返回列表