1、准备数据

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

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

2、实现全连接网络

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

 #隐含层参数设置
in_units=3 #输入神经元个数
h1_units=5 #隐含层输出神经元个数 #第二个隐含层神经元个数
h2_units=6 W1=tf.Variable(tf.truncated_normal([in_units,h1_units],stddev=0.1)) #隐含层权重,W初始化为截断正态分布
b1=tf.Variable(tf.zeros([h1_units])) #隐含层偏执设置为0
W2=tf.Variable(tf.truncated_normal([h1_units,h2_units],stddev=0.1)) #第二个隐含层权重,W初始化为截断正态分布
b2=tf.Variable(tf.zeros([h2_units])) #第二个隐含层偏执设置为0 W3=tf.Variable(tf.zeros([h2_units,2])) #输出层权重和偏执都设置为0
b3=tf.Variable(tf.zeros([2])) #定义输入变量x和dropout比率
x=tf.placeholder(tf.float32,[None,3]) #列是
keep_prob=tf.placeholder(tf.float32) #定义一个隐含层
hidden1=tf.nn.relu(tf.matmul(x,W1)+b1)
hidden1_drop=tf.nn.dropout(hidden1,keep_prob) #定义第二个隐藏层
hidden2=tf.nn.relu(tf.matmul(hidden1_drop,W2)+b2)
hidden2_drop=tf.nn.dropout(hidden2,keep_prob)

需要注意的地方

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

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

3、实现损失函数

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

 y=tf.nn.softmax(tf.matmul(hidden2_drop,W3)+b3)

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

需要注意的地方:

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

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

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

 data=np.loadtxt('txt.txt',dtype='float',delimiter=',')

 #将样本标签转换成独热编码
def label_change(before_label):
label_num=len(before_label)
change_arr=np.zeros((label_num,2)) #2表示有两类
for i in range(label_num):
#该样本标签数据要求从0开始
change_arr[i,int(before_label[i])]=1
return change_arr #用于提取数据
def train(data):
data_train_x=data[:7,:3] #取前几行作为训练数据,7表示前7行,3表示取前三列,排除数据标签
data_train_y=label_change(data[:7,-1])
return data_train_x,data_train_y data_train_x,data_train_y=train(data)

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

5、开始训练和测试

训练部分

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

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

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

 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]]
label=[[0,1],[1,0],[1,0],[1,0],[1,0],[0,1],[0,1]]
image_test=[[9,9,9]]
label_test=[[0,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. asp.net core 3.0 更新简记

    asp.net core 3.0 更新简记 asp.net core 3.0 更新简记 Intro 最近把活动室预约项目从 asp.net core 2.2 更新到了 asp.net core 3.0 ...

  2. 【maven的使用】1maven的概念与配置

    maven是一个基于java平台的自动化构建工具.构建工具的发展由make->ant->maven->gradle其中gradle还在发展中,使用较少,学习难度比较大,所以目前占据主 ...

  3. DrawerLayout(抽屉效果)

    DrawerLayout是V4包下提供的一种左滑右滑抽屉布局效果. 实现效果如下: 因为是官方提供的,所以使用起来也相对的比较简单. DrawerLayout 提供 1.当界面弹出的时候,主要内容区会 ...

  4. 从0开始学FreeRTOS-(任务调度)-4

    大家晚上好,我是杰杰,最近挺忙的,好久没有更新了,今天周末就吐血更新一下吧! # 前言 `FreeRTOS`是一个是实时内核,任务是程序执行的最小单位,也是调度器处理的基本单位,移植了`FreeRTO ...

  5. FreeRTOS优化与错误排查方法

    写在前面 主要是为刚接触 FreeRTOS 的用户指出那些新手通常容易遇到的问题.这里把最主要的篇幅放在栈溢出以及栈溢出j检测上,因为栈相关的问题是初学者遇到最多的问题. printf-stdarg. ...

  6. php微信支付v3版本签名生成

    前几天需要对接微信支付卡包营销活动需要对接微信新版SDKv3版 签名生成规则,微信的官方文档里面说明的还算可以吧,不过个人觉得不太理想- -.  自己调试的时候调试了半天才找了错误原因. https: ...

  7. LeetCode_933-Number of Recent Calls

    求最近3000毫秒内有多少次调用请求,每一次ping的时间一定比上一次的时间高:解法可以判断最后面一个数t1与最前一个数t2的差不大于3000毫秒,如果大于就直接舍弃,t1与t2之间的个数就是请求次数 ...

  8. BZOJ 1345: [Baltic2007]序列问题Sequence

    1345: [Baltic2007]序列问题Sequence Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 1180  Solved: 633[Subm ...

  9. 【POJ2001】Shortest Prefixes

    Shortest Prefixes Time Limit: 1000MS   Memory Limit: 30000K Total Submissions: 18724   Accepted: 810 ...

  10. Cutting Sticks UVA - 10003

    题文: 见:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_proble ...