Hello world

 # coding=utf-8
import tensorflow as tf
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '' try:
tf.contrib.eager.enable_eager_execution()
print("TF imported with eager execution!")
except ValueError:
print("TF already imported with eager execution!") tensor = tf.constant('Hello, world!')
tensor_value = tensor.numpy()
print(tensor_value) # ### Eager Execution
# https://www.tensorflow.org/guide/eager?hl=zh-cn
# https://www.tensorflow.org/api_docs/python/tf/enable_eager_execution
# TensorFlow的“Eager Execution”是一个命令式、由运行定义的接口,一旦从 Python 被调用可立即执行操作;
# - 操作会返回具体的值,而不是构建以后再运行的计算图;
# - 能够轻松地开始使用TensorFlow和调试模型,并且还减少了样板代码;
# - 使得 TensorFlow 的入门变得更简单,也使得研发工作变得更直观;

运行结果:

TF imported with eager execution!
b'Hello, world!'

建造第一个神经网络

 # coding=utf-8
import tensorflow as tf
import numpy as np
import matplotlib.pyplot as plt
import os os.environ['TF_CPP_MIN_LOG_LEVEL'] = '' # ### 添加神经层 def add_layer(inputs, in_size, out_size, activation_function=None): # 构造添加神经层的函数,这里设定默认激励函数为None
Weights = tf.Variable(tf.random_normal([in_size, out_size])) # 定义weights:为一个in_size行, out_size列的随机变量矩阵
biases = tf.Variable(tf.zeros([1, out_size]) + 0.1) # 定义biases:在机器学习中biases的推荐值不为0
Wx_plus_b = tf.matmul(inputs, Weights) + biases # 定义Wx_plus_b:神经网络未激活的值;tf.matmul()是矩阵的乘法
if activation_function is None: # 当激励函数为None时,输出当前的预测值Wx_plus_b
outputs = Wx_plus_b
else: # 不为None时,将Wx_plus_b传到activation_function()函数得到输出
outputs = activation_function(Wx_plus_b)
return outputs # 返回输出 # ### 构建数据
x_data = np.linspace(-1, 1, 300, dtype=np.float32)[:, np.newaxis] # 构建数据x_data
noise = np.random.normal(0, 0.05, x_data.shape).astype(np.float32) # 构建噪声数据noise,模拟真实情况
y_data = np.square(x_data) - 0.5 + noise # 构建数据y_data # ### 搭建网络
xs = tf.placeholder(tf.float32, [None, 1]) # 利用占位符定义神经网络的输入
ys = tf.placeholder(tf.float32, [None, 1]) # None代表无论输入有多少都可以,1表示输入只有一个特征
h1 = add_layer(xs, 1, 10, activation_function=tf.nn.relu) # 定义隐藏层,10个神经元,激励函数使用TensorFlow自带的tf.nn.relu
prediction = add_layer(h1, 10, 1, activation_function=None) # 定义输出层(预测层),输出一个结果
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),
reduction_indices=[1])) # 计算预测值prediction和真实值的误差,对二者差的平方求和再取平均
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss) # 选择Optimizer来最小化误差loss,以0.1的效率
init = tf.global_variables_initializer() # 使用变量前,必须初始化
sess = tf.Session() # 定义Session
sess.run(init) # 执行init初始化步骤 # ### 结果可视化
fig = plt.figure() # 创建图形实例
ax = fig.add_subplot(1, 1, 1) # 创建子图,作为1行1列图形矩阵中的第1个subplot
ax.scatter(x_data, y_data) # 绘制散点图
plt.ion() # 打开交互模式
plt.show() # 显示图形 # ### 训练
for i in range(1000): # 学习次数1000
sess.run(train_step, feed_dict={xs: x_data, ys: y_data}) # 学习内容是train_step
if i % 50 == 0: # 每隔50次训练输出机器学习的误差和刷新一次图形
print("loss: {}".format(sess.run(loss, feed_dict={xs: x_data, ys: y_data})))
try:
ax.lines.remove(lines[0])
except Exception:
pass
prediction_value = sess.run(prediction, feed_dict={xs: x_data})
lines = ax.plot(x_data, prediction_value, 'r-', lw=5) # 用红色、宽度为5的线来显示预测数据和输入之间的关系
plt.pause(0.2) # 暂停0.2秒 # ### 添加神经层
# 通过在TensorFlow中定义一个添加层的函数,可以添加神经层;
# 神经层里常见的参数通常有weights、biases和激励函数等;
# 添加神经层的函数def add_layer()有四个参数:输入值、输入的大小、输出的大小和激励函数;
#
# ### 构建数据
# 模拟真实数据;
#
# ### 搭建网络
# 神经网络(输入层1个、隐藏层10个、输出层1个);
#
# ### 训练
# 机器学习的内容是train_step, 用Session来run每一次training的数据,逐步提升神经网络的预测准确性;
# 注意:当运算要用到placeholder时,就需要feed_dict这个字典来指定输入;
#
# ### 可视化
# 利用matplotlib模块绘制和显示图形;

某一次的运行过程中的图形显示:

某一次的命令行输出:

 loss: 0.05769985169172287
loss: 0.007242309395223856
loss: 0.004746056627482176
loss: 0.004090217407792807
loss: 0.0037425532937049866
loss: 0.0035221632570028305
loss: 0.003357301466166973
loss: 0.0032187148462980986
loss: 0.0031040285248309374
loss: 0.0030171412508934736
loss: 0.0029463612008839846
loss: 0.002890094416216016
loss: 0.0028497371822595596
loss: 0.002820496214553714
loss: 0.0027967311907559633
loss: 0.002780070761218667
loss: 0.0027664629742503166
loss: 0.00275203469209373
loss: 0.002737578935921192
loss: 0.002723217708989978

AI - TensorFlow - 第一个神经网络(First Neural Network)的更多相关文章

  1. 递归神经网络(Recursive Neural Network, RNN)

    信息往往还存在着诸如树结构.图结构等更复杂的结构.这就需要用到递归神经网络 (Recursive Neural Network, RNN),巧合的是递归神经网络的缩写和循环神经网络一样,也是RNN,递 ...

  2. 卷积神经网络(Convolutional Neural Network, CNN)简析

    目录 1 神经网络 2 卷积神经网络 2.1 局部感知 2.2 参数共享 2.3 多卷积核 2.4 Down-pooling 2.5 多层卷积 3 ImageNet-2010网络结构 4 DeepID ...

  3. 深度学习FPGA实现基础知识10(Deep Learning(深度学习)卷积神经网络(Convolutional Neural Network,CNN))

    需求说明:深度学习FPGA实现知识储备 来自:http://blog.csdn.net/stdcoutzyx/article/details/41596663 说明:图文并茂,言简意赅. 自今年七月份 ...

  4. 人工神经网络 Artificial Neural Network

    2017-12-18 23:42:33 一.什么是深度学习 深度学习(deep neural network)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高 ...

  5. Tensorflow - Implement for a Convolutional Neural Network on MNIST.

    Coding according to TensorFlow 官方文档中文版 中文注释源于:tf.truncated_normal与tf.random_normal TF-卷积函数 tf.nn.con ...

  6. [C4] 前馈神经网络(Feedforward Neural Network)

    前馈神经网络(Feedforward Neural Network - BP) 常见的前馈神经网络 感知器网络 感知器(又叫感知机)是最简单的前馈网络,它主要用于模式分类,也可用在基于模式分类的学习控 ...

  7. 详解循环神经网络(Recurrent Neural Network)

    本文结构: 模型 训练算法 基于 RNN 的语言模型例子 代码实现 1. 模型 和全连接网络的区别 更细致到向量级的连接图 为什么循环神经网络可以往前看任意多个输入值 循环神经网络种类繁多,今天只看最 ...

  8. 脉冲神经网络Spiking neural network

    (原文地址:维基百科) 简单介绍: 脉冲神经网络Spiking neuralnetworks (SNNs)是第三代神经网络模型,其模拟神经元更加接近实际,除此之外,把时间信息的影响也考虑当中.思路是这 ...

  9. 吴恩达深度学习第1课第4周-任意层人工神经网络(Artificial Neural Network,即ANN)(向量化)手写推导过程(我觉得已经很详细了)

    学习了吴恩达老师深度学习工程师第一门课,受益匪浅,尤其是吴老师所用的符号系统,准确且易区分. 遵循吴老师的符号系统,我对任意层神经网络模型进行了详细的推导,形成笔记. 有人说推导任意层MLP很容易,我 ...

随机推荐

  1. 浏览器中缓存Cache

        在请求服务器资源时,服务器会将图片.网页文件等资源保存在客户端的临时文件夹中,称为缓存,当浏览器向服务器请求相同的资源时,如果与服务器版本一致,则从缓存读取     Cookie:服务器存放在 ...

  2. 你不知道的JavaScript--Item29 DOM基础详解

    看完JavaScript高级程序设计,整理了一下里面的DOM这一块的知识点,比较多,比较碎!DOM在整个页面的地位如图: DOM(文档对象模型)是针对HTML 和XML 文档的一个API(应用程序编程 ...

  3. 译MassTransit 快速入门

    给我看代码! 下面是MassTransit的功能设置. public class YourMessage { public string Text { get; set; } } public cla ...

  4. Java的参数传递是「值传递」还是「引用传递」?

    关于Java传参时是引用传递还是值传递,一直是一个讨论比较多的话题. 有人说Java中只有值传递,也有人说值传递和引用传递都是存在的,比较容易让人产生疑问. 关于值传递和引用传递其实需要分情况看待. ...

  5. 如何把word中的图片怎么导出来呢?

    在办公使用word的过程中你可能经常会遇到这个问题:插入到word中的图片找不到导出来的方法,是不是很郁闷呢,别急,今天咱们研究一下把word中的图片导出来的方法(把"我的"变成你 ...

  6. 1.1 为什么要使用lambda 表达式

    第1章 lambda 表达式 1.1 为什么要使用lambda 表达式 1.2 lambda 表达式的语法 1.3 函数式接口 1.4 方法引用 1.5 构造器引用 1.6 变量作用域 1.7 默认方 ...

  7. 记一次springboot项目,maven引发的悲剧(Unable to start EmbeddedWebApplicationContext due to missing EmbeddedServletCont)

    maven下载大的项目的时候,jar包下载出错是常见的, 但是这种情况经常能看到,如java.lang.ClassNotFoundException这样的提示, 所以一直以来也觉得maven下载jar ...

  8. hystrix 结果缓存机制(5)

    hystrix支持将一个请求结果缓存起来,下一个具有相同key的请求将直接从缓存中取出结果,减少请求开销.要使用hystrix cache功能 第一个要求是重写getCacheKey(),用来构造ca ...

  9. 服务网关基于RPC的用法

    企业为了保护内部系统的安全性,内网与外网都是隔离的,企业的服务应用都是运行在内网环境中,为了安全的考量,一般都不允许外部直接访问.API网关部署在防火墙外面,起到一层挡板作用,内部系统只接受API网关 ...

  10. TensorFlow TensorBoard使用

    摘要: 1.代码例子 2.主要功能内容: 1.代码例子 <TensorFlow实战>使用MLP处理Mnist数据集并TensorBoard上显示 2.主要功能 执行TensorBoard程 ...