TF之DNN:TF利用简单7个神经元的三层全连接神经网络【2-3-2】实现降低损失到0.000以下

简介: TF之DNN:TF利用简单7个神经元的三层全连接神经网络【2-3-2】实现降低损失到0.000以下

输出结果

image.png


实现代码

# -*- coding: utf-8 -*-

import tensorflow as tf

import os

import numpy as np

#TF:TF实现简单的三层全连接神经网络(输入、隐藏、输出层分别为 2、3 、 2 个神经元)

#隐藏层和输出层的激活函数使用的是 ReLU 函数。该模型训练的样本总数为 512,每次迭代读取的批量为 10。全连接网络以交叉熵为损失函数,并使用 Adam 优化算法进行权重更新。

import  tensorflow  as  tf

from  numpy.random  import   RandomState  

batch_size= 10

w1=tf. Variable (tf.random_normal([ 2 , 3 ],stddev= 1 ,seed= 1 ))

w2=tf. Variable (tf.random_normal([ 3 , 1 ],stddev= 1 ,seed= 1 ))

# None 可以根据batch 大小确定维度,在shape的一个维度上使用None

x=tf.placeholder(tf.float32,shape=( None , 2 ))

y=tf.placeholder(tf.float32,shape=( None , 1 ))  

#激活函数使用ReLU

a=tf.nn.relu(tf.matmul(x,w1))

yhat=tf.nn.relu(tf.matmul(a,w2))  

#定义交叉熵为损失函数,训练过程使用Adam算法最小化交叉熵

cross_entropy=-tf.reduce_mean(y*tf.log(tf.clip_by_value(yhat, 1e-10 , 1.0 )))

train_step=tf.train. AdamOptimizer ( 0.001 ).minimize(cross_entropy)

#tf.train.AdamOptimizer(learning_rate).minimize(cost_function) 是进行训练的函数,其中我们采用的是 Adam 优化算法更新权重,并且需要提供学习速率和损失函数这两个参数。

rdm= RandomState ( 1 )

data_size= 516  

#生成两个特征,共data_size个样本

X=rdm.rand(data_size, 2 )#X=rdm.rand(512,2) 表示随机生成 512 个样本,每个样本有两个特征值。

#定义规则给出样本标签,所有x1+x2<1的样本认为是正样本,其他为负样本。Y,1为正样本

Y = [[int(x1+x2 <  1 )]  for  (x1, x2)  in  X]

with  tf.Session()  as  sess:

   sess.run(tf.global_variables_initializer())

   print (sess.run(w1))

   print (sess.run(w2))

   steps= 11000

   for  i  in  range(steps):

   #选定每一个批量读取的首尾位置,确保在1个epoch内采样训练        

       start = i * batch_size % data_size

       end = min(start + batch_size,data_size)

       sess.run(train_step,feed_dict={x:X[start:end],y:Y[start:end]})

       if  i %  1000  ==  0 :

           training_loss= sess.run(cross_entropy,feed_dict={x:X,y:Y})

           print ( "在迭代 %d 次后,训练损失为 %g" %(i,training_loss))


相关文章
|
11天前
|
负载均衡 网络协议 算法
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
这网络层就像搭积木一样,上层协议都是基于下层协议搭出来的。不管是ping(用了ICMP协议)还是tcp本质上都是基于网络层IP协议的数据包,而到了物理层,都是二进制01串,都走网卡发出去了。 如果网络环境没发生变化,目的地又一样,那按道理说他们走的网络路径应该是一样的,什么情况下会不同呢? 我们就从路由这个话题聊起吧。
42 4
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
|
1月前
|
网络协议 网络安全 数据中心
|
1月前
|
机器学习/深度学习 自然语言处理 前端开发
前端神经网络入门:Brain.js - 详细介绍和对比不同的实现 - CNN、RNN、DNN、FFNN -无需准备环境打开浏览器即可测试运行-支持WebGPU加速
本文介绍了如何使用 JavaScript 神经网络库 **Brain.js** 实现不同类型的神经网络,包括前馈神经网络(FFNN)、深度神经网络(DNN)和循环神经网络(RNN)。通过简单的示例和代码,帮助前端开发者快速入门并理解神经网络的基本概念。文章还对比了各类神经网络的特点和适用场景,并简要介绍了卷积神经网络(CNN)的替代方案。
148 1
|
2月前
|
运维 定位技术 网络虚拟化
|
2月前
|
安全 网络协议 网络安全
|
1月前
|
物联网 5G 数据中心
|
2月前
|
Docker 容器
docker swarm启动服务并连接到网络
【10月更文挑战第16天】
46 5
|
2月前
|
安全 网络架构
无线网络:连接未来的无形纽带
【10月更文挑战第13天】
83 8
|
2月前
|
安全 网络协议 网络虚拟化
|
2月前
|
存储 网络协议 Java
【网络】UDP回显服务器和客户端的构造,以及连接流程
【网络】UDP回显服务器和客户端的构造,以及连接流程
61 2

热门文章

最新文章