TensorFlow笔记(一)TensorFlow入门

一、创建会话的两种方式

1.

  sess = tf.Session()
  sess.run()
  sess.cloes()

2

with tf.Session() as sess

sess.run()

2.不用调用“sess.close()”来防止资源泄漏。

二、Placeholder 相当于定义了一个位置,数据类型必须要指定,但是维度可以不给出。

import tensorflow as tf

w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed= 1))
w2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed= 1))


# x = tf.constant([[0.7, 0.9]])
x = tf.placeholder(tf.float32, name="input")

a = tf.matmul(x, w1)
y = tf.matmul(a, w2)

with tf.Session() as sess:
    # sess.run(w1.initializer)
    # sess.run(w2.initializer)
    init_op = tf.initialize_all_variables()
    sess.run(init_op)
    print(sess.run(y,feed_dict={x: [[0.7, 0.9], [0.1, 0.4]]}))

tf.placeholder(类型(必须), 维度(可省略),名字(???))

运行结果如下:

[[ 3.95757794]
 [ 1.15376544]]
三、构建网络实现二分类问题
一个完整的程序

import tensorflow as tf

from numpy.random import RandomState

batch_size = 8


w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed= 1))
w2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed= 1))


x = tf.placeholder(tf.float32, shape=(None, 2), name='x-input')
y_ = tf.placeholder(tf.float32, shape=(None, 1), name='y-input')

a = tf.matmul(x, w1)
y = tf.matmul(a, w2)

cross_entopy = -tf.reduce_mean(y_ * tf.log(tf.clip_by_value(y, 1e-10, 1.0)))

train_step = tf.train.AdamOptimizer(0.001).minimize(cross_entopy)

rdm = RandomState(1)
dataset_size = 128

X = rdm.rand(dataset_size, 2)

Y = [[int(x1 + x2 < 1)] for (x1, x2) in X]

with tf.Session() as sess:
    init_op = tf.initialize_all_variables()
    sess.run(init_op)
    print(sess.run(w1))
    print(sess.run(w2))
结果如下:
[[-0.81131822  1.48459876  0.06532937]
 [-2.4427042   0.0992484   0.59122431]]
[[-0.81131822]
 [ 1.48459876]
 [ 0.06532937]]
加入循环迭代的整个程序 :

import tensorflow as tf

from numpy.random import RandomState

batch_size = 8


w1 = tf.Variable(tf.random_normal([2, 3], stddev=1, seed= 1))
w2 = tf.Variable(tf.random_normal([3, 1], stddev=1, seed= 1))


x = tf.placeholder(tf.float32, shape=(None, 2), name='x-input')
y_ = tf.placeholder(tf.float32, shape=(None, 1), name='y-input')

a = tf.matmul(x, w1)
y = tf.matmul(a, w2)

cross_entopy = -tf.reduce_mean(y_ * tf.log(tf.clip_by_value(y, 1e-10, 1.0)))

train_step = tf.train.AdamOptimizer(0.001).minimize(cross_entopy)

rdm = RandomState(1)
dataset_size = 128

X = rdm.rand(dataset_size, 2)

Y = [[int(x1 + x2 < 1)] for (x1, x2) in X]

with tf.Session() as sess:
    init_op = tf.initialize_all_variables()
    sess.run(init_op)
    print(sess.run(w1))
    print(sess.run(w2))

# 设定训练的步数
    STEP = 5000
    for i in range(STEP):
       start = (i * batch_size) % dataset_size
       end = min(dataset_size, start + batch_size)
       sess.run(train_step, feed_dict={x: X[start:end], y_: Y[start:end]})
       if i % 1000 == 0:
            total_cross_entropy = sess.run(cross_entopy, feed_dict={x: X, y_: Y})
            print("After %d training step(s), cross entropy on all data is %g" %(i, total_cross_entropy))

    print(sess.run(w1))
    print(sess.run(w2))
运行的结果:

[[-0.81131822  1.48459876  0.06532937]
 [-2.4427042   0.0992484   0.59122431]]
[[-0.81131822]
 [ 1.48459876]
 [ 0.06532937]]
After 0 training step(s), cross entropy on all data is 0.0674925
After 1000 training step(s), cross entropy on all data is 0.0163385
After 2000 training step(s), cross entropy on all data is 0.00907547
After 3000 training step(s), cross entropy on all data is 0.00714436
After 4000 training step(s), cross entropy on all data is 0.00578471
[[-1.9618274   2.58235407  1.68203783]
 [-3.46817183  1.06982327  2.11789012]]
[[-1.82471502]
 [ 2.68546653]
 [ 1.41819513]]



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值