Tensorflow学习日志与心得

Tensorflow学习日志与心得(一)

最近开始着手于神经网络的学习,查阅了相关资料使用Tensorflow为构建的主流,现在开始从基础部分开始学习,一起进行交流

1.概述

Tensorflow是一个编程系统,使用图(graphs)来表示计算任务,图(graphs)中的节点称之为op(operation),一个op获得0个或多个Tensor,执行计算,产生0个或多个Tensor。Tensor 看作是一个n 维的数组或列表。图必须在会话(Session)里被启动。
Tensor—数据
Session—会话 所有计算都要在会话中进行
graphs—图
operation—节点 进行加减乘除等运算的节点
Tensorflow结构

2.Tensorflow基本操作

2.1常用函数
以下只列出了在学习中经常使用的函数,完整版可查看http://blog.csdn.net/lenbow/article/details/52152766
https://www.w3cschool.cn/tensorflow_python/tensorflow_python-36hu2mm9.html

操作描述
tf.add(x, y, name=None)求和
tf.sub(x, y, name=None)减法
tf.mul(x, y, name=None)乘法
tf.div(x, y, name=None)除法
tf.mod(x, y, name=None)取模
tf.square(x, name=None)计算平方 (y = x * x = x^2).
tf.sqrt(x, name=None)开平方根
tf.reduce_mean(input_tensor,axis=None,keep_dims=False,name=None,reduction_indices=None)求平均值
tf.matmul(a,b,transpose_a=False,transpose_b=False,a_is_sparse=False, b_is_sparse=False,name=None)矩阵相乘
tf.constant()定义常量
tf.Variable()定义变量
with tf.Session() as sess:定义会话结束后自动关闭
init = tf.global_variables_initializer()全局变量初始化
tf.assign(a, b)赋值 将b的值赋给a
sess.run(title)执行会话
tf.placeholder(dtype,shape=None,name=None)为一个tensor插入一个占位符

2.2基础操作
1)创建会话

import tensorflow as tf  #加入“头文件”
c1 = tf.constant([[3,3]])  #创建一行两列的矩阵
c2  = tf.constant([[3],[2]])  #创建两行一列的矩阵
product = tf.matmul(c1 , c2)  #进行矩阵乘法运算
with tf.Session() as sess:  #创建会话 Session(S要大写)
    reslut = sess.run(product)  #输出运算结果
print(reslut)
[[15]]

2)变量操作

import tensorflow as tf  #加入“头文件”
x = tf.Variable([1,2])  #创建变量x
c = tf.constant([3,3])  #创建常量c
sub = tf.subtract(x,c)  #进行减法操作
add = tf.add(x,c)  #进行加法操作
init = tf.global_variables_initializer()  #变量必须初始化 全局变量初始化
with tf.Session() as sess:  #创建session并创建默认图
    sess.run(init)
    print(sess.run(sub))
print(sess.run(add))
[-2 -1]
[4 5]
#变量自加一
state = tf.Variable(0,name='counter')  #创建初始值为0的变量
new_value = tf.add(state,1)  #给state加1
update = tf.assign(state , new_value)  #将new_value的值赋给state
init = tf.global_variables_initializer()  #全局变量初始化

with tf.Session() as sess: 
    sess.run(init)
    print(sess.run(state))
    for _ in range(5):  #循环5次加1的操作
        print(sess.run(update))
print(sess.run(state))
0
1
2
3
4
5

3)Feed操作

c1 = tf.placeholder(tf.float32)  #创建32位浮点型占位符(在执行时需要为其提供数据data)
c2 = tf.placeholder(tf.float32)
add = tf.add(c1,c2)  #相加
with tf.Session() as sess:
print(sess.run(add,feed_dict={c1:[2],c2:[22]}))  #在最终执行时给c1 c2赋值
[24.]

4)梯度下降拟合曲线

import numpy as np
import tensorflow as tf
x_data = np.random.rand(100)
y_data =  .1 * x_data +.2
#构建线性模型优化器 优化y=kx+b
#待优化的参数
b = tf.Variable(0.)  #变量
k = tf.Variable(0.)
y = k * x_data + b
#构建二次代价函数
loss = tf.reduce_mean(tf.square(y_data - y))  #二者相差平方的均值
optimizer = tf.train.GradientDescentOptimizer(0.2)  #梯度下降优化器
train = optimizer.minimize(loss)  #训练使代价函数最小

init = tf.global_variables_initializer()  #初始化
with tf.Session() as sess:
    sess.run(init)
    for step in range(200):  #迭代200次
        sess.run(train)
        if step%20==0:  #每20次打印一次
            print(step,'[k,b]:',sess.run([k,b]))
0 [k,b]: [0.050436843, 0.099178314]
20 [k,b]: [0.10087012, 0.19955701]
40 [k,b]: [0.10054425, 0.19972299]
60 [k,b]: [0.1003404, 0.19982675]
80 [k,b]: [0.10021292, 0.19989164]
100 [k,b]: [0.10013317, 0.19993222]
120 [k,b]: [0.10008328, 0.19995761]
140 [k,b]: [0.10005209, 0.19997348]
160 [k,b]: [0.10003257, 0.19998342]
180 [k,b]: [0.10002038, 0.19998963]

本次都是一些基础操作,也是本人第一次制作博客,主要用作自身学习,如有错误的地方还望大神指点!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值