首先在这里给大家分享Google工程师亲授 Tensorflow2.0-入门到进阶教程

有需要的小伙伴可点击进入扣群下载,群内不定期的会分享资料教程,点击直达链接:https://jq.qq.com/?_wv=1027&k=55fzJrT

#!/usr/bin/env python3.6
# -*- coding: utf-8 -*-
#fetch
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt

#实用numpy在-0.5和0.5之间来生成200个均匀分布样本点,[:,np.newaxis]把一行转化为200行一列
x_data = np.linspace(-0.5,0.5,10)[:,np.newaxis]

#noise随机生成
noise = np.random.normal(0,0.02,x_data.shape)
y_data = np.square(x_data) + noise

#定义两个placeholder,[None,1]定义形状,None行不确定,1一列
x = tf.placeholder(tf.float32,[None,1])
y = tf.placeholder(tf.float32,[None,1])

#构建一个简单的神经网络,输入一个X,经过神经网络计算得到一个y,希望预测和真实值接近说明网络构建成功
#定义神经网络中间层权值,形状一行10列,1代表一个输入,中间层10个神经元
Weights_L1 = tf.Variable(tf.random_normal([1,10]))

#偏置值初始化为0
biases_L1 = tf.Variable(tf.zeros([1,10]))

# x输入,weights_L1都是矩阵,biases_L1偏置值
Wx_plus_b_L1 = tf.matmul(x,Weights_L1) + biases_L1

#L1中间层的输出,激活函数tanh,Wx_plus_b_L1中间层输出
L1 = tf.nn.tanh(Wx_plus_b_L1)

#输出层
Weights_L2 = tf.Variable(tf.random_normal([10, 1]))
biases_L2 = tf.Variable(tf.zeros([1, 1]))

#信号的总和,上一层的输出即下一层的输入
Wx_plus_b_L2 = tf.matmul(L1, Weights_L2) + biases_L2

#预测经过一个激活函数
prediction = tf.nn.tanh(Wx_plus_b_L2)

#二次代价函数
loss = tf.reduce_mean(tf.square(y-prediction))

#实用梯度下降法训练
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)

with tf.Session() as sess:
#变量初始化
sess.run(tf.global_variables_initializer())
#训练
for _ in range(2000):
sess.run(train_step, feed_dict={x: x_data, y: y_data})
#获得预测值
prediction_value = sess.run(prediction,feed_dict={x:x_data})
#画图方式展示
plt.figure()
plt.scatter(x_data,y_data)
plt.plot(x_data,prediction_value,'r-',lw=5)#红色实线,线宽为5
plt.show()
运行结果展示:

MNIST手写数字数据集下载地址: http://yann.lecun.com/exdb/mnist/
train-images-idx3-ubyte.gz:  训练集的数据
train-labels-idx1-ubyte.gz:  训练集的标签 
t10k-images-idx3-ubyte.gz:   测试集的数据 
t10k-labels-idx1-ubyte.gz:   测试集的标签
下载下来的数据集被分为两部分:60000行的训练数据集(mnist.train)和10000行的测试数据集(mnist.test)都是手写的数字
每一张图片包含28*28个像素,我们把这一个数组展开成一个向量,长度是28*28=784.因此在MNIST训练数据集中mnist.train.images时一个形状为[60000,784]的张量,第一个维度数字用来索引图片,第二个维度数字用来素音每张图片中的像素点。图片里的某个像素的强度值介于0-1之间
代码
# coding: utf-8

# In[2]:

import tensorflow as tf
from tensorflow.examples.tutorials.mnist import input_data

# In[3]:

# 载入数据集,加入数据集,MNIST_DATA路径为当前路径,,会从网上下载数据集,
# one_hot=True把标签转换为只有0.1的格式,某一位是1,其它位为0

mnist = input_data.read_data_sets("MNIST_data", one_hot=True)

# 每个批次的大小,训练模型时候不是一张一张放入,而是一次放入100个批次,即一次性放入100张图片,以矩阵形式
batch_size = 100
# 计算一共有多少个批次
n_batch = mnist.train.num_examples // batch_size #//代表整出的意思

# 定义两个placeholder, None代表任意的值,一会会变成100, 784=28*28
x = tf.placeholder(tf.float32, [None, 784])

#数字从0到9,总共10个数字
y = tf.placeholder(tf.float32, [None, 10])

# 创建一个简单的神经网络,在这里总共2个层,即一个输入层一个输出层,不加隐藏层
# #输出总共10个数,即10个神经元
# #权值W,
W = tf.Variable(tf.zeros([784, 10]))
#偏置值
b = tf.Variable(tf.zeros([10]))
#偏置值
prediction = tf.nn.softmax(tf.matmul(x, W) + b)

# 二次代价函数
loss = tf.reduce_mean(tf.square(y - prediction))
# 使用梯度下降法,0.2的学习率,最小化loss
train_step = tf.train.GradientDescentOptimizer(0.2).minimize(loss)

# 初始化变量
init = tf.global_variables_initializer()

# 结果存放在一个布尔型列表中
#测试集群的准确率,equal比较两个参数的大小,相同的为true,不同为false,argmax(y,1)求两个值的最大值
#tf.argmax(y,1) ,里面要么为0,要么为1, 如果是1则范围1的位置
#tf.argmax(prediction,1)

#结果存放在一个布尔型列表中,预测值和真实值形成对比

correct_prediction = tf.equal(tf.argmax(y, 1), tf.argmax(prediction, 1)) # argmax返回一维张量中最大的值所在的位置
# 求准确率
#cast把预测的进行对比,把预测结果进行格式转化一下,把bool型转化为float32类型,然后再求平均值
accuracy = tf.reduce_mean(tf.cast(correct_prediction, tf.float32))

with tf.Session() as sess:
sess.run(init)
for epoch in range(21):#迭代21个周期,所有图片循环21次
for batch in range(n_batch):
batch_xs, batch_ys = mnist.train.next_batch(batch_size)
sess.run(train_step, feed_dict={x: batch_xs, y: batch_ys})

acc = sess.run(accuracy, feed_dict={x: mnist.test.images, y: mnist.test.labels})
print("Iter " + str(epoch) + ",Testing Accuracy " + str(acc))

# In[ ]:

运行结果展示:
[tensorflow@zhangjinyutensorflow ~]$ python3.6 MNIST.py
/home/tensorflow/anaconda3/lib/python3.6/site-packages/h5py/__init__.py:36: FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
from ._conv import register_converters as _register_converters
WARNING:tensorflow:From MNIST.py:12: read_data_sets (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.
Instructions for updating:
Please use alternatives such as official/mnist/dataset.py from tensorflow/models.
WARNING:tensorflow:From /home/tensorflow/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:260: maybe_download (from tensorflow.contrib.learn.python.learn.datasets.base) is deprecated and will be removed in a future version.
Instructions for updating:
Please write your own downloading logic.
WARNING:tensorflow:From /home/tensorflow/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:262: extract_images (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.
Instructions for updating:
Please use tf.data to implement this functionality.
Extracting MNIST_data/train-images-idx3-ubyte.gz
WARNING:tensorflow:From /home/tensorflow/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:267: extract_labels (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.
Instructions for updating:
Please use tf.data to implement this functionality.
Extracting MNIST_data/train-labels-idx1-ubyte.gz
WARNING:tensorflow:From /home/tensorflow/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:110: dense_to_one_hot (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.
Instructions for updating:
Please use tf.one_hot on tensors.
Extracting MNIST_data/t10k-images-idx3-ubyte.gz
Extracting MNIST_data/t10k-labels-idx1-ubyte.gz
WARNING:tensorflow:From /home/tensorflow/anaconda3/lib/python3.6/site-packages/tensorflow/contrib/learn/python/learn/datasets/mnist.py:290: DataSet.__init__ (from tensorflow.contrib.learn.python.learn.datasets.mnist) is deprecated and will be removed in a future version.
Instructions for updating:
Please use alternatives such as official/mnist/dataset.py from tensorflow/models.
2018-11-06 09:07:50.440732: I tensorflow/core/common_runtime/process_util.cc:69] Creating new thread pool with default inter op setting: 2. Tune using inter_op_parallelism_threads for best performance.
Iter 0,Testing Accuracy 0.8301
Iter 1,Testing Accuracy 0.8708
Iter 2,Testing Accuracy 0.8809
Iter 3,Testing Accuracy 0.8875
Iter 4,Testing Accuracy 0.894
Iter 5,Testing Accuracy 0.8969
Iter 6,Testing Accuracy 0.8988
Iter 7,Testing Accuracy 0.9015
Iter 8,Testing Accuracy 0.9037
Iter 9,Testing Accuracy 0.9051
Iter 10,Testing Accuracy 0.9062
Iter 11,Testing Accuracy 0.9073
Iter 12,Testing Accuracy 0.9077
Iter 13,Testing Accuracy 0.9088
Iter 14,Testing Accuracy 0.9096
Iter 15,Testing Accuracy 0.9107
Iter 16,Testing Accuracy 0.9113
Iter 17,Testing Accuracy 0.9128
Iter 18,Testing Accuracy 0.9125
Iter 19,Testing Accuracy 0.9134
Iter 20,Testing Accuracy 0.9141
[tensorflow@zhangjinyutensorflow ~]$ ls
anaconda3 MNIST_data MNIST.py package
[tensorflow@zhangjinyutensorflow ~]$ ls MNIST_data/
a.sh t10k-images-idx3-ubyte.gz t10k-labels-idx1-ubyte.gz train-images-idx3-ubyte.gz train-labels-idx1-ubyte.gz
[tensorflow@zhangjinyutensorflow ~]$

深度学习框架Tensorflow应用(Google工程师)的更多相关文章

  1. 截图:【炼数成金】深度学习框架Tensorflow学习与应用

    创建图.启动图 Shift+Tab Tab 变量介绍: F etch Feed 简单的模型构造 :线性回归 MNIST数据集 Softmax函数 非线性回归神经网络   MINIST数据集分类器简单版 ...

  2. Ubuntu16.04搭建深度学习框架——TensorFlow

    TensorFlow是一个采用数据流图(data flow graphs),用于数值计算的开源软件库,说白了,就是一个库. 小编自己在Ubuntu搭建了深度学习框架TensorFlow,感觉挺简单,现 ...

  3. 金玉良缘易配而木石前盟难得|M1 Mac os(Apple Silicon)天生一对Python3开发环境搭建(集成深度学习框架Tensorflow/Pytorch)

    原文转载自「刘悦的技术博客」https://v3u.cn/a_id_189 笔者投入M1的怀抱已经有一段时间了,俗话说得好,但闻新人笑,不见旧人哭,Intel mac早已被束之高阁,而M1 mac已经 ...

  4. 深度学习框架TensorFlow在Kubernetes上的实践

    什么是TensorFlow TensorFlow是谷歌在去年11月份开源出来的深度学习框架.开篇我们提到过AlphaGo,它的开发团队DeepMind已经宣布之后的所有系统都将基于TensorFlow ...

  5. 关于深度学习框架 TensorFlow、Theano 和 Keras

    [TensorFlow] ——( https://morvanzhou.github.io/tutorials/machine-learning/tensorflow/) 1.TensorFlow是啥 ...

  6. 一文全解:利用谷歌深度学习框架Tensorflow识别手写数字图片(初学者篇)

    笔记整理者:王小草 笔记整理时间2017年2月24日 原文地址 http://blog.csdn.net/sinat_33761963/article/details/56837466?fps=1&a ...

  7. 转:TensorFlow和Caffe、MXNet、Keras等其他深度学习框架的对比

    http://geek.csdn.net/news/detail/138968 Google近日发布了TensorFlow 1.0候选版,这第一个稳定版将是深度学习框架发展中的里程碑的一步.自Tens ...

  8. TensorFlow与主流深度学习框架对比

    引言:AlphaGo在2017年年初化身Master,在弈城和野狐等平台上横扫中日韩围棋高手,取得60连胜,未尝败绩.AlphaGo背后神秘的推动力就是TensorFlow--Google于2015年 ...

  9. 28款GitHub最流行的开源机器学习项目,推荐GitHub上10 个开源深度学习框架

    20 个顶尖的 Python 机器学习开源项目 机器学习 2015-06-08 22:44:30 发布 您的评价: 0.0 收藏 1收藏 我们在Github上的贡献者和提交者之中检查了用Python语 ...

随机推荐

  1. win7远程连接全屏和窗口模式切换

    最近开发需要win7远程连接,我知道在连接的时候可以设置全屏模式 但是进去之后想要切换就只能通过快捷键了上网查了一下是ctrl+alt+break.网上说的没有错.我查官方文档也是这样.但是我按的时候 ...

  2. JAVA TCP/IP网络通讯编程(二)

    一个实例通过client端和server端通讯 客户端通过TCP/IP传输资源文件,比如图片,文字,音频,视频等..... 服务端接受到文件存入本地磁盘,返回接受到:“收到来自于"+s.ge ...

  3. JavaScript系列:函数式编程(开篇)

    前言: 上一篇介绍了 函数回调,高阶函数以及函数柯里化等高级函数应用,同时,因为正在学习JavaScript·函数式编程,想整理一下函数式编程中,对于我们日常比较有用的部分. 为什么函数式编程很重要? ...

  4. spring5 源码深度解析----- 创建AOP代理之获取增强器

    在上一篇的博文中我们讲解了通过自定义配置完成了对AnnotationAwareAspectJAutoProxyCreator类型的自动注册,那么这个类到底做了什么工作来完成AOP的操作呢?首先我们看看 ...

  5. Windows搭建SVN服务器

    安装 1.下载地址:https://www.visualsvn.com/files/VisualSVN-Server-4.0.3-x64.msi 2.开始安装: 3.安装配置: 4.Next直到完成 ...

  6. 重构网页过程中的小tips

    1.display为inline-block的元素可以使用virtical-align:middle来使得元素垂直居中对齐 2.在一些按钮标签或者mark标签中,如果文本内容确定不会改变长度的话,可以 ...

  7. git的下载及简单使用一

    git 是世界上最先进的分布式版本控制系统 常用的git网站 GitHub gitee(码云) git的下载地址 https://git-scm.com/downloads 而后根据计算机的系统选择相 ...

  8. Java描述设计模式(15):责任链模式

    本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景描述 1.请假审批流程 公司常见的请假审批流程:请假天数 当 day<=3 天,项目经理审批 当 3<day<= ...

  9. php代码Xdebug调试使用笔记

    0x01 Xdebug简介 Xdebug是一个开放源代码的PHP程序调试器 运行流程: 0x02  Xdebug配置 日志 xdebug.trace_output_dir: 日志追踪输出目录 xdeb ...

  10. shark恒破解笔记2-绕过自校验

    这集讲的是绕过自校验 主要是通过文件大小的自校验 首先查壳 有壳  可以用esp定律搞定 OD载入  右键od脱裤壳调试进程 可以看到一些信息 包括入口点252F0 修正后地址为252F0 loadP ...