一、搭建一个三层的神经网络

定义添加神经层的函数

1.训练的数据
2.定义节点准备接收数据
3.定义神经层:隐藏层和预测层
4.定义 loss 表达式
5.选择 optimizer 使 loss 达到最小

import tensorflow as tf
import numpy as np

# 添加层
def add_layer(inputs, in_size, out_size, activation_function=None):
    # add one more layer and return the output of this layer
    Weights = tf.Variable(tf.random_normal([in_size, out_size]))
    biases = tf.Variable(tf.zeros([1, out_size]) + 0.1)
    Wx_plus_b = tf.matmul(inputs, Weights) + biases
    if activation_function is None:
        outputs = Wx_plus_b
    else:
        outputs = activation_function(Wx_plus_b)
    return outputs

# 1.训练的数据
# Make up some real data 
x_data = np.linspace(-1,1,300)[:, np.newaxis]
noise = np.random.normal(0, 0.05, x_data.shape)
y_data = np.square(x_data) - 0.5 + noise

# 2.定义节点准备接收数据
# define placeholder for inputs to network  
xs = tf.placeholder(tf.float32, [None, 1]) #None表示样本数量
ys = tf.placeholder(tf.float32, [None, 1])

# 3.定义神经层:隐藏层和预测层
# add hidden layer 输入值是 xs,在隐藏层有 10 个神经元   
l1 = add_layer(xs, 1, 10, activation_function=tf.nn.relu)
# add output layer 输入值是隐藏层 l1,在预测层输出 1 个结果
prediction = add_layer(l1, 10, 1, activation_function=None)

# 4.定义 loss 表达式
# the error between prediciton and real data    
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),
                     reduction_indices=[1]))

# 5.选择 optimizer 使 loss 达到最小                   
# 这一行定义了用什么方式去减少 loss,学习率是 0.1       
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss)

# important step 对所有变量进行初始化
init = tf.initialize_all_variables()
sess = tf.Session()
# 上面定义的都没有运算,直到 sess.run 才会开始运算
sess.run(init)

# 迭代 1000 次学习,sess.run optimizer
for i in range(1000):
    #train_step 和 loss 都是由 placeholder 定义的运算,所以这里要用 feed 传入参数
    sess.run(train_step, feed_dict={xs: x_data, ys: y_data})
    if i % 50 == 0:
        # to see the step improvement
        print(sess.run(loss, feed_dict={xs: x_data, ys: y_data}))

二、tensorflow的基本概念:

1.Session会话控制机制,变量激活以及获取结果都需要进行sess.run()

2. 用 tf.Variable 定义变量,与python不同的是,必须先定义它是一个变量,它才是一个变量,初始值为0。

变量必须初始化,init = tf.initialize_all_variables(),用sess.run()激活

3.placeholder

在 tensorflow 中用placeholder 来描述等待输入的节点,只需要指定类型即可,然后在执行节点的时候用一个字典来“喂”这些节点。相当于先把变量 hold 住,然后每次从外部传入data,注意 placeholder 和 feed_dict 是绑定用的。

import tensorflow as tf

input1 = tf.placeholder(tf.float32)
input2 = tf.placeholder(tf.float32)
ouput = tf.mul(input1, input2)

with tf.Session() as sess:
    print(sess.run(ouput, feed_dict={input1: [7.], input2: [2.]}))

tensorflow 学习(一)- 搭建一个三层的神经网络相关推荐

  1. 第五章:Tensorflow 2.0 利用十三层卷积神经网络实现cifar 100训练(理论+实战)

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明. 本文链接:https://blog.csdn.net/LQ_qing/article/deta ...

  2. 用TensorFlow搭建一个万能的神经网络框架(持续更新)

    博客作者:凌逆战 博客地址:https://www.cnblogs.com/LXP-Never/p/12774058.html 文章代码:https://github.com/LXP-Never/bl ...

  3. Tensorflow学习笔记——搭建神经网络

    目录 1.搭建神经网络6步法 2.函数用法和介绍 (1)tf.keras.models.Sequential() (2)Model.compile() (3)model.fit() (4)model. ...

  4. 采用numpy搭建一个多层的神经网络

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u013733326/article/details/79767169 </div>< ...

  5. 2021-06-14 Socketio学习使用搭建一个聊天室

    Socketio搭建一个聊天室 前言 本次实验所用编程语言为HTML以及javascript和JQurey语言和Socketio框架,所用编辑文本工具为VS code. 注意事项 (1)前端编程注意H ...

  6. TensorFlow学习笔记——(11)循环神经网络

    文章目录 一.循环核 二.循环核时间步展开 三.循环计算层 四.TF描述循环计算层 五.循环计算过程 1.RNN实现单个字母预测 (1)过程 (2)完整代码 2.RNN实现输入多个字母,预测一个字母 ...

  7. 手把手搭建一个【卷积神经网络】

    前言 本文介绍卷积神经网络的入门案例,通过搭建和训练一个模型,来对10种常见的物体进行识别分类:使用到CIFAR10数据集,它包含10 类,即:"飞机","汽车" ...

  8. 使用 Keras搭建一个深度卷积神经网络来识别 c验证码

    向AI转型的程序员都关注了这个号

  9. 【NLP实战】如何基于Tensorflow搭建一个聊天机器人

    实战是学习一门技术最好的方式,也是深入了解一门技术唯一的方式.因此,NLP专栏计划推出一个实战专栏,让有兴趣的同学在看文章之余也可以自动动手试一试. 本篇介绍如何基于tensorflow快速搭建一个基 ...

最新文章

  1. CssSelector之selenium元素定位
  2. 2018 年,去百度面试 Java 后端的一次面试经历
  3. 实战ELK(9) Elasticsearch地理位置
  4. RxJava 和 RxAndroid 五(线程调度)
  5. html radio 作用域,ionic 表单输入 ion-checkbox ion-radio ion-toggle ion-spinner
  6. 鲁尼禁赛萨哈一射一传领风骚 曼联客场3-0查尔顿
  7. 第一百三十七期:一个简单的小案例带你理解MySQL中的事务
  8. 基于hadoop架构的企业数字化转型,阿里数据中台实战案例
  9. Mybatis if test 中int判断非空的坑
  10. 怎样在virtualbox下WIN7共享XP的文件
  11. LeetCode(447)——回旋镖的数量(JavaScript)
  12. Fuchsia中GN与Ninja构建demo
  13. xshell修改字体大小
  14. WPS 连接 H2 Database
  15. 金蝶系统怎么清理服务器,“破坏王”教你如何彻底卸载金蝶kis专业版
  16. 网易云邮箱验证码注册及修改密码
  17. 不是机器人韩剧所有歌曲_15首超好听经典韩剧OST 《鬼怪》配乐每听必哭
  18. 使用python基于socket的tcp服务器聊天室
  19. 给定一个完全循环赛的比赛结果,其中n个队伍两两比赛一次。每场比赛以一方胜出或者平局结束。设计一个算法,把n个队伍排序,序列中每个队伍都不曾输给紧随其后的那个队伍。说明该算法的时间效率类型。
  20. Socket状态变迁图

热门文章

  1. Vscode代码格式化文档配置
  2. 14.1.2. EXPLAIN ANALYZE
  3. 关于宇宙大爆炸的理论模型
  4. ThingJS-X森可视平台框架源码 java+Netcore版本 旗舰版企业版
  5. Excel中杂乱的图片,一键就可以让它们对齐行
  6. WSL无法打开或者卡死
  7. uni-app 压缩图片(base64上传)包含图片验证
  8. 微信开发者工具IDE调试webview内嵌H5方式
  9. python 过滤掉字符串中的回车符与换行符(\t\n)
  10. java计算上个工作日方法