深度学习之tensorflow (一)

一、TensorFlow简介

1.TensorFlow定义

tensor  :张量,N维数组

Flow   :  流,基于数据流图的计算

TensorFlow : 张量从图像的一端流动到另一端的计算过程,是将复杂的数据结     构传输至人工智能神经网络中进行分析和处理的过程。



2. 工作模式:

    图graphs表示计算任务,图中的节点称之为op(operation) ,一个 op可以获得0个      或多个张量(tensor),通过创建会话(session)对象来执行计算,产生0个或多个tensor。

其工作模式分为两步:(1)define the computation graph

(2)run the graph (with data) in session



3. 特点:

(1)异步:一处写、一处读、一处训练

(2)全局 : 操作添加到全局的graph中 , 监控添加到全局的summary中,

参数/损失添加到全局的collection中

(3)符号式的:创建时没有具体,运行时才传入



二、   代码

1 、定义神经网络的相关参数和变量

 1 # -*- coding: utf-8 -*-
 2 # version:python 3.5
 3 import tensorflow as tf
 4 from numpy.random import RandomState
 5
 6 batch_size = 8
 7 x = tf.placeholder(tf.float32, shape=(None, 2), name="x-input")
 8 y_ = tf.placeholder(tf.float32, shape=(None, 1), name=‘y-input‘)
 9 w1= tf.Variable(tf.random_normal([2, 1], stddev=1, seed=1))
10 y = tf.matmul(x, w1)

2、设置自定义的损失函数

1 # 定义损失函数使得预测少了的损失大,于是模型应该偏向多的方向预测。
2 loss_less = 10
3 loss_more = 1
4 loss = tf.reduce_sum(tf.where(tf.greater(y, y_), (y - y_) * loss_more, (y_ - y) * loss_less))
5 train_step = tf.train.AdamOptimizer(0.001).minimize(loss)

3、生成模拟数据集

1 rdm = RandomState(1)
2 X = rdm.rand(128,2)
3 Y = [[x1+x2+rdm.rand()/10.0-0.05] for (x1, x2) in X]

4、训练模型

 1 with tf.Session() as sess:
 2     init_op = tf.global_variables_initializer()
 3     sess.run(init_op)
 4     STEPS = 5000
 5     for i in range(STEPS):
 6         start = (i*batch_size) % 128
 7         end = (i*batch_size) % 128 + batch_size
 8         sess.run(train_step, feed_dict={x: X[start:end], y_: Y[start:end]})
 9         if i % 1000 == 0:
10             print("After %d training step(s), w1 is: " % (i))
11             print sess.run(w1), "\n"
12     print "Final w1 is: \n", sess.run(w1)

结果:

After 0 training step(s), w1 is:
[[-0.81031823]
 [ 1.4855988 ]] 

After 1000 training step(s), w1 is:
[[ 0.01247112]
 [ 2.1385448 ]] 

After 2000 training step(s), w1 is:
[[ 0.45567414]
 [ 2.17060661]] 

After 3000 training step(s), w1 is:
[[ 0.69968724]
 [ 1.8465308 ]] 

After 4000 training step(s), w1 is:
[[ 0.89886665]
 [ 1.29736018]] 

Final w1 is:
[[ 1.01934695]
 [ 1.04280889]]

5、重新定义损失函数,使得预测多了的损失大,于是模型应该偏向少的方向预测

 1 loss_less = 1
 2 loss_more = 10
 3 loss = tf.reduce_sum(tf.where(tf.greater(y, y_), (y - y_) * loss_more, (y_ - y) * loss_less))
 4 train_step = tf.train.AdamOptimizer(0.001).minimize(loss)
 5
 6 with tf.Session() as sess:
 7     init_op = tf.global_variables_initializer()
 8     sess.run(init_op)
 9     STEPS = 5000
10     for i in range(STEPS):
11         start = (i*batch_size) % 128
12         end = (i*batch_size) % 128 + batch_size
13         sess.run(train_step, feed_dict={x: X[start:end], y_: Y[start:end]})
14         if i % 1000 == 0:
15             print("After %d training step(s), w1 is: " % (i))
16             print sess.run(w1), "\n"
17     print "Final w1 is: \n", sess.run(w1)

结果:

After 0 training step(s), w1 is:
[[-0.81231821]
 [ 1.48359871]] 

After 1000 training step(s), w1 is:
[[ 0.18643527]
 [ 1.07393336]] 

After 2000 training step(s), w1 is:
[[ 0.95444274]
 [ 0.98088616]] 

After 3000 training step(s), w1 is:
[[ 0.95574027]
 [ 0.9806633 ]] 

After 4000 training step(s), w1 is:
[[ 0.95466018]
 [ 0.98135227]] 

Final w1 is:
[[ 0.95525807]
 [ 0.9813394 ]]
				
时间: 2024-11-03 01:17:04

深度学习之tensorflow (一)的相关文章

TensorFlow【机器学习】:如何正确的掌握Google深度学习框架TensorFlow(第二代分布式机器学习系统)?

本文标签:   机器学习 TensorFlow Google深度学习框架 分布式机器学习 唐源 VGG REST   服务器 自 2015 年底开源到如今更快.更灵活.更方便的 1.0 版本正式发布,由 Google 推出的第二代分布式机器学习系统 TensorFlow一直在为我们带来惊喜,一方面是技术层面持续的迭代演进,从分布式版本.服务框架 TensorFlow Serving.上层封装 TF.Learn 到 Windows 支持.JIT 编译器 XLA.动态计算图框架 Fold 等,以及

深度学习(TensorFlow)环境搭建:(三)Ubuntu16.04+CUDA8.0+cuDNN7+Anaconda4.4+Python3.6+TensorFlow1.3

紧接着上一篇的文章<深度学习(TensorFlow)环境搭建:(二)Ubuntu16.04+1080Ti显卡驱动>,这篇文章,主要讲解如何安装CUDA+CUDNN,不过前提是我们是已经把NVIDIA显卡驱动安装好了 一.安装CUDA CUDA(Compute Unified Device Architecture),是英伟达公司推出的一种基于新的并行编程模型和指令集架构的通用计算架构,它能利用英伟达GPU的并行计算引擎,比CPU更高效的解决许多复杂计算任务,想使用GPU就必须要使用CUDA.

牛逼哥TensorFlow资源分享:白话深度学习与TensorFlow

今天,给大家分享一本关于TensorFlow的书籍-白话深度学习与TensorFlow. 最近在看这个深度学习框架,门外汉,为了快速入门,找的都是中文教材,可能准确度译文不如原文精确,但毕竟容易理解,上手快. 买了四本原版书,但有几本最近更新的书籍由于错过了双十一,感觉价格略贵,京东薅羊毛习惯了,一般三折以上的书我都不考虑买了. 所以想办法找到了电子书,也是通过各种途径吧,淘宝,闲鱼,论坛,大部分都是买的,网上下来的免费的好多都没有书签,而且质量不是很好. 在这里免费分享给大家,试了下,不知道为

深度学习之TensorFlow安装与初体验

深度学习之TensorFlow安装与初体验 学习前 搞懂一些关系和概念 首先,搞清楚一个关系:深度学习的前身是人工神经网络,深度学习只是人工智能的一种,深层次的神经网络结构就是深度学习的模型,浅层次的神经网络结构是浅度学习的模型. 浅度学习:层数少于3层,使用全连接的一般被认为是浅度神经网络,也就是浅度学习的模型,全连接的可能性过于繁多,如果层数超过三层,计算量呈现指数级增长,计算机无法计算到结果,所以产生了深度学习概念 深度学习:层数可以有很多层,但是并不是全连接的传递参数,如上图中右边是一个

分享《深度学习之TensorFlow:入门、原理与进阶实战》PDF+源代码

下载:https://pan.baidu.com/s/1zI-pblJ5dEwjGVe-QQP9hQ 更多资料:http://blog.51cto.com/3215120 <深度学习之TensorFlow:入门.原理与进阶实战>,李金洪 著.中文PDF,939页,带书签目录,文字可以复制粘贴.配套源代码. 如图: 原文地址:http://blog.51cto.com/14050756/2315854

分享《白话深度学习与TensorFlow》+PDF+高杨

下载:https://pan.baidu.com/s/150FjIfsNVlPh-Fq-IghgWA更多资料分享:http://blog.51cto.com/14087171 <白话深度学习与TensorFlow>中文版PDF 经典学习资料,带目录和书签,文字可以复制粘贴. 图示如下: 原文地址:http://blog.51cto.com/14087171/2321679

深度学习之TensorFlow:入门原理与进阶实战

深度学习之TensorFlow:入门原理与进阶实战 链接:https://pan.baidu.com/s/1wUos19e7qhm_fA52FV8gQg 提取码:nz8i 目录 · · · · · · 配套学习资源 前言 第1篇 深度学习与TensorFlow基础 第1章 快速了解人工智能与TensorFlow 2 1.1 什么是深度学习 2 1.2 TensorFlow是做什么的 3 1.3 TensorFlow的特点 4 1.4 其他深度学习框架特点及介绍 5 1.5 如何通过本书学好深度学

AI全面入门经典书籍-pytho入门+数学+机器学习+深度学习(tensorflow)一次性打包

百度网盘:https://pan.baidu.com/s/1SShwxxBIHB_rynF_jUjApA 一.内容清单: 1..python入门书籍:?? ??? ?python基础教程.pdf?? ??? ?python语言及其应用.pdf?? ??? ?python语言入门.pdf?? ??? ?像计算机科学家一样思考python第2版.pdf ?? ??? ?备注:自己找一本精读,其他辅助阅读,会有不一样的效果.?? ? 2.数学:?? ??? ?同济高等数学 第六版 上册.pdf?? ?

【深度解析】Google第二代深度学习引擎TensorFlow开源

作者:王嘉俊 王婉婷 TensorFlow 是 Google 第二代深度学习系统,今天宣布完全开源.TensorFlow 是一种编写机器学习算法的界面,也可以编译执行机器学习算法的代码.使用 TensorFlow 编写的运算可以几乎不用更改,就能被运行在多种异质系统上,从移动设备(例如手机和平板)到拥有几百台的机器和几千个 GPU 之类运算设备的大规模分布式系统. TensorFlow 降低了深度学习的使用门槛,让从业人员能够更简单和方便地开发新产品.作为Google 发布的“平台级产品”,很多

深度学习之TensorFlow(一)——基本使用

一.目前主流的深度学习框架Caffe, TensorFlow, MXNet, Torch, Theano比较 库名称 开发语言 速度 灵活性 文档 适合模型 平台 上手难易 Caffe c++/cuda 快 一般 全面 CNN 所有系统 中等 TensorFlow c++/cuda/Python 中等 好 中等 CNN/RNN Linux, OSX 难 MXNet c++/cuda 快 好 全面 CNN 所有系统 中等 Torch c/lua/cuda 快 好 全面 CNN/RNN linux,