Tensorflow placeholder

Submitted by Lizhe on Thu, 08/17/2017 - 10:45

tf.placeholder 可以创建一个占位符用来等待feed_dict为其提供数据

import tensorflow as tf
a=tf.placeholder(tf.float32)
b=tf.placeholder(tf.float32)
c=tf.add(a,b)

with tf.Session() as sess:
    print(sess.run(c,feed_dict={a:10,b:30}))
 

 

使用tf.placeholder() 时 dtype 参数是必须指定的, shape可选默认是None,接收任意类型

不能直接将placeholder的值(上面代码中的a和b) 传入session.run(), 这些值是无法进行计算的,直接传入run方法会触发一个异常

例如将上面例子中run方法的第一个参数改成a

Tensorflow Session

Submitted by Lizhe on Thu, 08/17/2017 - 09:53

tf.Session() 接收3个可选参数

target 该参数用于在分布式设置中指定连接不同的tf.train.Server实例, 一般来说默认是空字符串

graph 参数指定了将要在Session对象中加载的Session对象, 默认值是None, 表示使用当前默认的数据流

config 参数允许用户指定配置, 如cpu或gpu内核数

 

一旦创建了Session对象之后, 就可以使用session.run()方法来计算Tensor对象的输出

run方法接收一个参数fetches 以及 3个可选参数 feed_dict, options 和 run_metadata

fetches参数接收任意的数据流图元素 ( Operation 和 Tensor) , 如果是Tensor对象, run会输出一个NumPy数组, 如果是Operation则输出None

feed_dict参数用于覆盖数据流图中的Tensor对象的原始值, 它接收一个字典参数, key为要覆盖值的句柄, 值类型必需与原类型相同或者可以相互转换

下面的例子输出6 而不是 3

Tensorflow Graph

Submitted by Lizhe on Wed, 08/16/2017 - 18:08

要创建Graph对象需要使用下面的语句

g1 = tf.Graph()
g2 = tf.Graph()

然后使用来使用这个g1对象的上下文

with g1.as_default():

    ....

不过你可能会奇怪为什么之前我们没有创建过这个对象

当TensorFlow库被加载时, 它会自动创建一个Graph对象,并将其作为默认的数据流图

因此, 在Graph.as_default() 上下文管理器 (例如 g1.as_default())之外定义的任何Op和Tensor对象都会自动被放置在这个默认的Graph中

Tensorflow 张量

Submitted by Lizhe on Wed, 08/16/2017 - 16:09

张量是n维矩阵的抽象

简单来说, 1D张量也就是一个向量, 2D张量是一个矩阵

之前的例子中我们使用了两个参数, 分别是5和3

如果将两个参数合并成一个1D张量

import tensorflow as tf

sess = tf.Session()

a = tf.constant([5,3],name="user_input_2")
b = tf.reduce_prod(a, name="mul_op")
c = tf.reduce_sum(a, name="add_op")
d = tf.add(b,c, name="sum_op")
print(d)
print(sess.run(d))
writer = tf.train.SummaryWriter('./my_graph3',sess.graph)

Tensorflow 安装和简单入门

Submitted by Lizhe on Wed, 08/16/2017 - 14:12

Tensorflow的安装其实很简单

centos7自带了python2.7所以python的安装可以省略掉

yum install  python-pip python-devel

pip install https://storage.googleapis.com/tensorflow/linux/cpu/tensorflow-0.9.0-cp27-none-linux_x86_64.whl

安装结束...

 

然后试试helloworld

html5 canvas 画圆

Submitted by Lizhe on Thu, 08/03/2017 - 16:48

 

先看一段画圆的简单代码

<!DOCTYPE html>
<html>
<head> 
<meta charset="utf-8"> 
<title>title</title> 
</head>
<body>

<canvas id="myCanvas" width="500" height="500" style="border:1px solid #c3c3c3;">
您的浏览器不支持 HTML5 canvas 标签。
</canvas>

<script>

springboot 事务例子(单机)

Submitted by Lizhe on Fri, 07/28/2017 - 15:20

注意以下几点

  1. @Transactional 可以写在类上也可以写在方法上
  2. @Transactional写在方法上时必须是public方法,而且最好有接口, 没有接口的事务可能会失效
  3. 默认是只有runtime exception才回滚,所以需要rollbackFor={Exception.class, RuntimeException.class}

 

/springbootTransactionSample/pom.xml