Tensorflow <一> 一层全连接网络实现XOR
来源:互联网 发布:罗素名言 知乎 编辑:程序博客网 时间:2024/06/08 18:45
注释已经很详细了
# -*- coding: utf-8 -*-# @author: Zafedom# @date: 17/5/14 下午9:17'''练习tf使用一层的网络实现xor这个代码很拼运气,不见得结果好文档参考:https://yjango.gitbooks.io/superorganism/content/dai_ma_yan_shi.html代码参考:https://github.com/YJango/tensorflow/blob/master/core_code.ipynb'''import tensorflow as tfimport numpy as npif __name__ == '__main__': #create net # 网络结构:2维输入 --> 2维隐藏层 --> 1维输出 # 学习速率(learning rate):0.0001 D_input = 2 #输入维度 D_label = 1 D_hidden = 2 lr = 1e-4 #容器:用tf.placeholder创建输入值和真实值的容器,编程过程中始终是个空的,只有加载到sess中才会放入具体值。这种容器便是存放tensor的数据类型。 #容器的三个参数: # 精度: 如果是用GPU训练,浮点精度要低于32bit,由第一个参数tf.float32定义。 # 矩阵形状: 输入输出的容器都是矩阵。为的是可以进行mini - batch一次算多个样本的平均梯度来训练。None意味着样本数可随意改变。 # 命名:控制tensorboard生成图中的名字,也会方便debug。 x = tf.placeholder(tf.float32, [None, D_input], name="x") t = tf.placeholder(tf.float32, [None, D_label], name="t") #隐藏层 # 变量:tensorflow中的变量tf.Variable是用于定义在训练过程中可以更新的值。权重W和偏移b正符合该特点。 # 初始化:合理的初始化会给网络一个比较好的训练起点,帮助逃脱局部极小值( or 鞍点)。详细请回顾梯度下降训练法。tf.truncated_normal([D_input, D_hidden], stddev=0.1) # 是初始化的一种方法(还有很多种),其中[imcoing_dim, outputing_dim] # 是矩阵的形状,前后参数的意义是进入该层的维度(节点个数)和输出该层的维度。stddev = 是用于初始化的标准差。 # 矩阵乘法:tf.matmul(x, W_h1) # 用于计算矩阵乘法 # 激活函数:除了tf.nn.relu() # 还有tf.nn.tanh(),tf.nn.sigmoid() #这里的tf.truncated_normal( [D_input, D_hidden], stddev = 0.1 )在run的时候,返回形状为[D_input, D_hidden]的array, 因为是x*w+b ,所以形状是[D_input, D_hidden], 每一列表示第一个hidden的unit W_h1 = tf.Variable(tf.truncated_normal([D_input, D_hidden], stddev=0.1), name="W_h") b_h1 = tf.Variable(tf.constant(0.1, shape=[D_hidden]), name="b_h") pre_act_h1 = tf.matmul(x, W_h1) + b_h1 # 计算a(Wx+b),激活用relu act_h1 = tf.nn.relu(pre_act_h1, name='act_h') W_o = tf.Variable(tf.truncated_normal([D_hidden, D_label], stddev=0.1), name="W_o") b_o = tf.Variable(tf.constant(0.1, shape=[D_label]), name="b_o") pre_act_o = tf.matmul(act_h1, W_o) + b_o y = tf.nn.relu(pre_act_o, name='act_y') #反向传播 # 损失函数:定义想要不断缩小的损失函数。 # loss = tf.reduce_mean( (y-t)**2 ) loss = tf.reduce_mean((y - t) ** 2) # 更新方法:选择想要用于更新权重的训练方法和每次更新步伐(lr),除tf.train.AdamOptimizer外还有tf.train.RMSPropOptimizer等。默认推荐AdamOptimizer。 train_step = tf.train.AdamOptimizer(lr).minimize(loss) #加载 X = [[0, 0], [0, 1], [1, 0], [1, 1]] Y = [[0], [1], [1], [0]] X = np.array(X).astype('int16') Y = np.array(Y).astype('int16') sess = tf.InteractiveSession() tf.initialize_all_variables().run() # 训练 for i in range(20000): sess.run(train_step, feed_dict={ x: X, t: Y }) #计算预测值 print sess.run(y, feed_dict={ x: X }) # 查看隐藏层的输出 print sess.run(act_h1, feed_dict={ x: X })__END__ = True
1 0
- Tensorflow <一> 一层全连接网络实现XOR
- TensorFlow 全连接网络实现
- tensorflow 多元全连接
- TensorFlow学习笔记(4)----完整的工程示例:全连接前馈网络识别MNIST
- 汐月教育之理解TensorFlow(三.2)构建全连接网络进行MNIST识别
- TensorFlow实战13:实现策略网络(强化学习一)
- Tensorflow实现CNN网络
- Tensorflow实现全链接神经网络
- caffe训练好模型的特征提取(fc7,最后一层全连接层)
- 使用tensorflow实现全连接神经网络的简单示例,含源码
- 4. tensorflow之全连接层(dense)
- 开源|如何利用Tensorflow实现语义分割全卷积网络(附源码)
- TensorFlow学习记录--3.MNIST从低级到高级(从全连接网络到卷积神经网络的解释)
- mysql 实现全连接
- tensorflow 实现游乐场的网络
- TensorFlow实现简单卷积网络
- TensorFlow代码实现(二)[实现异或门(XOR)]
- 网络命令全解(一)
- 关于制作图桌互联网订桌系统的思考
- 代理模式
- P
- 如何快速适应mac环境开发
- NodeJS http 小结
- Tensorflow <一> 一层全连接网络实现XOR
- 一个H5小项目
- 三十岁之后的人生规划
- 欢迎使用CSDN-markdown编辑器
- 【C语言训练】阶乘和数
- PYCTP 使用笔记
- ZooKeeper原理及使用
- 懂商业的技术合伙人(13):谈谈我对商业的4点理解,创业公司做好核心业务是关键
- 关于制作图桌互联网订桌系统的思考