这几天在B站看莫烦的视频,学习一波,给出视频地址:https://www.bilibili.com/video/av16001891/?p=22

先放出代码

#####搭建神经网络测试
def add_layer(inputs,in_size,out_size,activation_function=None):
Weights = tf.Variable(tf.random_normal([in_size, out_size],dtype=np.float32))
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 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 xs = tf.placeholder(tf.float32,[None,1])
ys = tf.placeholder(tf.float32,[None,1])
l1 = add_layer(xs,1,10,activation_function=tf.nn.relu) prediction = add_layer(l1,10,1,activation_function=None)
loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),
reduction_indices=[1]))
train_step = tf.train.GradientDescentOptimizer(0.1).minimize(loss) init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
for i in range(1000):
sess.run(train_step,feed_dict={xs:x_data,ys:y_data})
if i% 50 ==0:
print(sess.run(loss,feed_dict={xs:x_data,ys:y_data}))
#####

  首先,在add_layer函数中,参数有inputs,in_size,out_size,activation_function=None

其中inupts是输入,in_size是输入维度,out_size是输出维度, activation_function是激活函数,

Weights是权重,维度是(in_size*out_size);

bias是偏置,维度是(1*out_size);

Wx_plus_b的维度和out_size相同;

  x_data = np.linspace(-1,1,300)[:, np.newaxis]这步操作,表示生成-1到1之间均匀分布的300个数,然后转换维度,变成(300,1);noise和y_data的维度均和

x_data相同;

  xs = tf.placeholder(tf.float32,[None,1])和ys = tf.placeholder(tf.float32,[None,1])表示生成xs和ys变量的占位符,维度是(None,1),不知道有多少行,但只要1列;

  l1 = add_layer(xs,1,10,activation_function=tf.nn.relu)表示xs是inputs,in_size是1,out_size是10,激活函数是relu;添加了一层神经网络

  prediction = add_layer(l1,10,1,activation_function=None)表示输入是l1,in_size是10,out_size是1,没有激活函数

  接下去是计算损失,loss = tf.reduce_mean(tf.reduce_sum(tf.square(ys - prediction),reduction_indices=[1]))

  之后一步是用梯度下降来优化损失函数;

解释一下为什么不直接在add_layer函数中使用x_data:x_data是ndarray格式,Weights是Variable格式,不能直接相乘,所以要在session会话中用字典格式传入x_data和y_data,  也就是sess.run(train_step,feed_dict={xs:x_data,ys:y_data})

  

tensorflow学习之搭建最简单的神经网络的更多相关文章

  1. TensorFlow学习笔记(六)循环神经网络

    一.循环神经网络简介 循环神经网络的主要用途是处理和预测序列数据.循环神经网络刻画了一个序列当前的输出与之前信息的关系.从网络结构上,循环神经网络会记忆之前的信息,并利用之前的信息影响后面节点的输出. ...

  2. python日记:用pytorch搭建一个简单的神经网络

    最近在学习pytorch框架,给大家分享一个最最最最基本的用pytorch搭建神经网络并且训练的方法.本人是第一次写这种分享文章,希望对初学pytorch的朋友有所帮助! 一.任务 首先说下我们要搭建 ...

  3. TensorFlow学习笔记13-循环、递归神经网络

    循环神经网络(RNN) 卷积网络专门处理网格化的数据,而循环网络专门处理序列化的数据. 一般的神经网络结构为: 一般的神经网络结构的前提假设是:元素之间是相互独立的,输入.输出都是独立的. 现实世界中 ...

  4. TensorFlow学习笔记(二)深层神经网络

    一.深度学习与深层神经网络 深层神经网络是实现“多层非线性变换”的一种方法. 深层神经网络有两个非常重要的特性:深层和非线性. 1.1线性模型的局限性 线性模型:y =wx+b 线性模型的最大特点就是 ...

  5. 深度学习环境搭建部署(DeepLearning 神经网络)

    工作环境 系统:Ubuntu LTS 显卡:GPU NVIDIA驱动:410.93 CUDA:10.0 Python:.x CUDA以及NVIDIA驱动安装,详见https://www.cnblogs ...

  6. 『TensorFlow』读书笔记_简单卷积神经网络

    如果你可视化CNN的各层级结构,你会发现里面的每一层神经元的激活态都对应了一种特定的信息,越是底层的,就越接近画面的纹理信息,如同物品的材质. 越是上层的,就越接近实际内容(能说出来是个什么东西的那些 ...

  7. tensorflow学习笔记四:mnist实例--用简单的神经网络来训练和测试

    刚开始学习tf时,我们从简单的地方开始.卷积神经网络(CNN)是由简单的神经网络(NN)发展而来的,因此,我们的第一个例子,就从神经网络开始. 神经网络没有卷积功能,只有简单的三层:输入层,隐藏层和输 ...

  8. Tensorflow学习:(二)搭建神经网络

    一.神经网络的实现过程 1.准备数据集,提取特征,作为输入喂给神经网络       2.搭建神经网络结构,从输入到输出       3.大量特征数据喂给 NN,迭代优化 NN 参数       4.使 ...

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

    紧接着上一篇的文章<深度学习(TensorFlow)环境搭建:(二)Ubuntu16.04+1080Ti显卡驱动>,这篇文章,主要讲解如何安装CUDA+CUDNN,不过前提是我们是已经把N ...

随机推荐

  1. 跨域 (2) cors

    html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF- ...

  2. Jmeter性能测试--自己看到的博客收集

    性能测试的场景:https://www.cnblogs.com/little-little-bai/p/10338156.html

  3. Python之网路编程之粘包现象

    一.什么是粘包 须知:只有TCP有粘包现象,UDP永远不会粘包 粘包不一定会发生 如果发生了:1.可能是在客户端已经粘了 2.客户端没有粘,可能是在服务端粘了 首先需要掌握一个socket收发消息的原 ...

  4. CodeForces-721B-Passwords

    链接: https://vjudge.net/problem/CodeForces-721B 题意: Vanya is managed to enter his favourite site Code ...

  5. rsync快速部署记录

    rsync快速部署记录 安装rsync和使用环境:客户端:10.192.30.59 fudao_db_cluster_002 (将本地文件备份到服务端)服务端:10.192.30.60 fudao_d ...

  6. 【NOIP2016提高A组五校联考2】tree

    题目 给一棵n 个结点的有根树,结点由1 到n 标号,根结点的标号为1.每个结点上有一个物品,第i 个结点上的物品价值为vi. 你需要从所有结点中选出若干个结点,使得对于任意一个被选中的结点,其到根的 ...

  7. Linux系统如何选择MongoDB版本

    mogodb各个版本该怎么选: 如下图所示,我们可以看到有许多版本的安装包,那我们选择下载哪个呢?下面我会讲解一下: 我们发现主要有6种,分别是 : Amazon Linux(亚马逊). Debian ...

  8. awk-第一篇

    awk [单独的编程语言解释器] 1.awk介绍 全称:Aho Weinberger Kernaighan三个人的首字母缩写: 1970年第一次出现在Unix机器上,后来在开源领域使用它: 所以,我们 ...

  9. 页面渲染机制(一、DOM和CSSOM树的构建)

    1.HTML的加载 HTML是一个网页的基础,下载完成后解析 2.其他静态资源加载 解析HTML时,发现其中有其他外部资源链接比如CSS.JS.图片等,会立即启用别的线程下载. 但当外部资源是JS时, ...

  10. Linux下cs简单通讯(socket)

    Server: #include<iostream> #include<sys/types.h> #include<sys/socket.h> #include&l ...