1、准备数据

把数据放进txt文件中(数据量大的话,就写一段程序自己把数据自动的写入txt文件中,任何语言都能实现),数据之间用逗号隔开,最后一列标注数据的标签(用于分类),比如0,1。每一行表示一个训练样本。如下图所示。

其中前三列表示数据(特征),最后一列表示数据(特征)的标签。注意:标签需要从0开始编码!

2、实现全连接网络

这个过程我就不多说了,如何非常简单,就是普通的代码实现,本篇博客的重点在于使用自己的数据,有些需要注意的地方我在后面会做注释。直接上代码

  1. #隐含层参数设置
  2. in_units=3 #输入神经元个数
  3. h1_units=5 #隐含层输出神经元个数
  4.  
  5. #第二个隐含层神经元个数
  6. h2_units=6
  7.  
  8. W1=tf.Variable(tf.truncated_normal([in_units,h1_units],stddev=0.1)) #隐含层权重,W初始化为截断正态分布
  9. b1=tf.Variable(tf.zeros([h1_units])) #隐含层偏执设置为0
  10. W2=tf.Variable(tf.truncated_normal([h1_units,h2_units],stddev=0.1)) #第二个隐含层权重,W初始化为截断正态分布
  11. b2=tf.Variable(tf.zeros([h2_units])) #第二个隐含层偏执设置为0
  12.  
  13. W3=tf.Variable(tf.zeros([h2_units,2])) #输出层权重和偏执都设置为0
  14. b3=tf.Variable(tf.zeros([2]))
  15.  
  16. #定义输入变量x和dropout比率
  17. x=tf.placeholder(tf.float32,[None,3]) #列是
  18. keep_prob=tf.placeholder(tf.float32)
  19.  
  20. #定义一个隐含层
  21. hidden1=tf.nn.relu(tf.matmul(x,W1)+b1)
  22. hidden1_drop=tf.nn.dropout(hidden1,keep_prob)
  23.  
  24. #定义第二个隐藏层
  25. hidden2=tf.nn.relu(tf.matmul(hidden1_drop,W2)+b2)
  26. hidden2_drop=tf.nn.dropout(hidden2,keep_prob)

需要注意的地方

in_units=3  #输入神经元个数,和特征的维度对应起来

x=tf.placeholder(tf.float32,[None,3]) #和特征的维度对应起来

3、实现损失函数

标准的softmax和交叉熵,不多说了。

  1. y=tf.nn.softmax(tf.matmul(hidden2_drop,W3)+b3)
  2.  
  3. #定义损失函数和选择优化器
  4. y_=tf.placeholder(tf.float32,[None,2]) #列是2,表示两类,行表示输入的训练样本个数,None表示不定
  5.  
  6. corss_entropy=tf.reduce_mean(-tf.reduce_sum(y_*tf.log(y),reduction_indices=[1]))
  7. train_step=tf.train.AdagradOptimizer(0.3).minimize(corss_entropy)

需要注意的地方:

y_=tf.placeholder(tf.float32,[None,2])  #有几类就写几,我写的是两类,所以就是2

4、从txt中读取数据,并做处理

重点来了,首先从txt中把数据读取出来,然后对标签进行独热编码,什么是独热编码?索引表示类别,是哪个类别这一维就是非零(用1)。代码实现:

  1. data=np.loadtxt('txt.txt',dtype='float',delimiter=',')
  2.  
  3. #将样本标签转换成独热编码
  4. def label_change(before_label):
  5. label_num=len(before_label)
  6. change_arr=np.zeros((label_num,2)) #2表示有两类
  7. for i in range(label_num):
  8. #该样本标签数据要求从0开始
  9. change_arr[i,int(before_label[i])]=1
  10. return change_arr
  11.  
  12. #用于提取数据
  13. def train(data):
  14. data_train_x=data[:7,:3] #取前几行作为训练数据,7表示前7行,3表示取前三列,排除数据标签
  15. data_train_y=label_change(data[:7,-1])
  16. return data_train_x,data_train_y
  17.  
  18. data_train_x,data_train_y=train(data)

需要注意的地方在代码中我都做了注释,不再赘述。

5、开始训练和测试

训练部分

  1. for i in range(5): #迭代,取batch进行训练
  2. img_batch, label_batch = tf.train.shuffle_batch([data_train_x, data_train_y], #随机取样本
  3. batch_size=2,
  4. num_threads=2,
  5. capacity=7,
  6. min_after_dequeue=2,
  7. enqueue_many=True)
  8. coord = tf.train.Coordinator()
  9. threads = tf.train.start_queue_runners(coord=coord, sess=sess)
  10.  
  11. img_batch,label_batch=sess.run([img_batch,label_batch])
  12.  
  13. train_step.run({x:img_batch,y_:label_batch,keep_prob:0.75}
  1. #预测部分
  2. correct_prediction=tf.equal(tf.argmax(y,1),tf.argmax(y_,1))
  3. accuracy=tf.reduce_mean(tf.cast(correct_prediction,tf.float32))
  4. print(accuracy.eval({x:data_train_x,y_:data_train_y,keep_prob:1.0}))

这样就全部流程完成。其中网络结构可以做相应的修改,核心在于如何从txt中读取自己的数据输入到全连接神经网络(多层感知机)中进行训练和测试。

当然,也可以在定义变量的时候直接输入,不用从txt中读取。即:

  1. image=[[1.0,2.0,3.0],[9,8,5],[9,5,6],[7,5,3],[6,12,7],[8,3,6],[2,8,71]]
  2. label=[[0,1],[1,0],[1,0],[1,0],[1,0],[0,1],[0,1]]
  3. image_test=[[9,9,9]]
  4. label_test=[[0,1]]

直接定于数据的话,适合小数据量的情况,大数据量的情况并不适用。

好了,本篇博客介绍到此结束。下一篇介绍如何处理图像数据。

  1. 以上便是本章分享内容,有问题,可以进群871458817交流在群内下载资料学习。最后,感谢观看!

深度学习tensorflow实战笔记(1)全连接神经网络(FCN)训练自己的数据(从txt文件中读取)的更多相关文章

  1. 深度学习tensorflow实战笔记(2)图像转换成tfrecords和读取

    1.准备数据 首选将自己的图像数据分类分别放在不同的文件夹下,比如新建data文件夹,data文件夹下分别存放up和low文件夹,up和low文件夹下存放对应的图像数据.也可以把up和low文件夹换成 ...

  2. 深度学习tensorflow实战笔记 用预训练好的VGG-16模型提取图像特征

    1.首先就要下载模型结构 首先要做的就是下载训练好的模型结构和预训练好的模型,结构地址是:点击打开链接 模型结构如下: 文件test_vgg16.py可以用于提取特征.其中vgg16.npy是需要单独 ...

  3. Keras入门——(1)全连接神经网络FCN

    Anaconda安装Keras: conda install keras 安装完成: 在Jupyter Notebook中新建并执行代码: import keras from keras.datase ...

  4. [深度学习][图像处理][毕设][笔记][安装环境][下载地址]安装VS2013、matconvnet、cuda、cudnn过程中产生的一些记录,2018.5.6号

    最近半个多月,被cuda等软件折磨的死去活来,昨天下午,终于安装好了环境,趁着matlab正在,在线下载VOT2016数据集,3点睡眼惺忪被闹醒后,睡不着,爬上来写这份记录. 先记录一下自己电脑的基本 ...

  5. tensorflow中使用mnist数据集训练全连接神经网络-学习笔记

    tensorflow中使用mnist数据集训练全连接神经网络 ——学习曹健老师“人工智能实践:tensorflow笔记”的学习笔记, 感谢曹老师 前期准备:mnist数据集下载,并存入data目录: ...

  6. 深度学习Keras框架笔记之Dense类(标准的一维全连接层)

    深度学习Keras框架笔记之Dense类(标准的一维全连接层) 例: keras.layers.core.Dense(output_dim,init='glorot_uniform', activat ...

  7. 深度学习-tensorflow学习笔记(2)-MNIST手写字体识别

    深度学习-tensorflow学习笔记(2)-MNIST手写字体识别超级详细版 这是tf入门的第一个例子.minst应该是内置的数据集. 前置知识在学习笔记(1)里面讲过了 这里直接上代码 # -*- ...

  8. 深度学习入门实战(二)-用TensorFlow训练线性回归

    欢迎大家关注腾讯云技术社区-博客园官方主页,我们将持续在博客园为大家推荐技术精品文章哦~ 作者 :董超 上一篇文章我们介绍了 MxNet 的安装,但 MxNet 有个缺点,那就是文档不太全,用起来可能 ...

  9. MINIST深度学习识别:python全连接神经网络和pytorch LeNet CNN网络训练实现及比较(三)

    版权声明:本文为博主原创文章,欢迎转载,并请注明出处.联系方式:460356155@qq.com 在前两篇文章MINIST深度学习识别:python全连接神经网络和pytorch LeNet CNN网 ...

随机推荐

  1. Jmeter定时器:Precise Throughput Timer使用

    百度上这方面资料很少,google上有一些,我试着总结一下. Precise Throughput Timer 是Jmeter4.0添加的新功能,直接摘录一段英文: The Precise Throu ...

  2. eclipse中Tomcat version 9.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5, 6, 7, and 8 Web modules

    eclipse中导入了一个别人的项目,运行时提示没有可以使用的服务器,如下: 查看了下项目属性设置中的服务器,还是提示没有可用服务器: 尝试对部署在已有服务器下的项目Add and Remove... ...

  3. Java类和对象动手动脑

    动手动脑1 以下代码为何无法通过编译?哪儿出错了?

  4. Linux 命令之 mkdir

    mkdir的作用是创建一个目录,可以理解为 make directory 的缩写. 创建目录 mkdir dir_name 在当前目录创建一个名为 dir_name 的目录. 同时创建多级目录 假设现 ...

  5. Qt5教程: (7) 模态/非模态对话框

    模态对话框就是在其没有被关闭之前,用户不能与同一个应用程序的其他窗口进行交互,直到该对话框关闭. 非模态对话框就是在被打开时,用户既可选择和该对话框进行交互,也可以选择同应用程序的其他窗口交互. 1. ...

  6. phpstudy后门rce批量利用脚本

    写两个 一个批量检测的  一个交互式shell的 暂时py  图形化的qt写出来..有点问题 后门包 : GET / HTTP/1.1Host: 127.0.0.1User-Agent: Mozill ...

  7. 在博客中增加自己的live2d纸片人模型方法

    目录 在博客中增加自己的live2d纸片人模型 准备工具 使用步骤 附件 在博客中增加自己的live2d纸片人模型 准备工具 github仓库:存放live2d模型和json文件 如果你的博客支持本地 ...

  8. idea迁移到其他电脑,省去重新安装破解及配置

    idea迁移到其他电脑,省去重新安装破解及配置,要求路径与之前的电脑保持相同. 1. 将idea的配置目录文件夹整个复制过去,默认路径 C:\Users\Administrator\.IntelliJ ...

  9. oracle初级系列教程

    https://www.cnblogs.com/linjiqin/category/349944.html

  10. openssl之DH(Diffie–Hellman)加密

    //加密机制初始化 g_HDMgr.init(); //对方的public key BIGNUM* peerPubKey = NULL; peerPubKey = BN_bin2bn((unsigne ...