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))


相关文章
|
1月前
|
Ubuntu
虚拟机Ubuntu连接不了网络的解决方法
虚拟机Ubuntu连接不了网络的解决方法
|
2月前
|
Shell Linux C语言
【Shell 命令集合 网络通讯 】Linux 关闭PPP(Point-to-Point Protocol)连接 ppp-off命令 使用指南
【Shell 命令集合 网络通讯 】Linux 关闭PPP(Point-to-Point Protocol)连接 ppp-off命令 使用指南
43 1
|
2月前
|
监控 网络协议 Linux
【Shell 命令集合 网络通讯 】Linux 显示网络 连接、路由表和网络接口信息 netstat命令 使用指南
【Shell 命令集合 网络通讯 】Linux 显示网络 连接、路由表和网络接口信息 netstat命令 使用指南
65 1
|
5天前
|
安全 网络协议 物联网
城域以太网:连接城市的高速网络
【4月更文挑战第22天】
10 0
|
5天前
|
数据可视化 网络协议
|
5天前
|
设计模式 数据中心 网络架构
|
14天前
|
安全 网络安全 数据安全/隐私保护
HTTP代理SSL连接:保障网络安全的重要协议
HTTP代理SSL连接:保障网络安全的重要协议
|
15天前
|
运维 安全 Cloud Native
安全访问服务边缘(SASE):网络新时代的安全与连接解决方案
SASE(安全访问服务边缘)是一种云基安全模型,结合了网络功能和安全策略,由Gartner在2019年提出。它强调身份驱动的私有网络、云原生架构和全面边缘支持,旨在解决传统WAN和安全方案的局限性,如高延迟和分散管理。SASE通过降低IT成本、提升安全响应和网络性能,应对数据分散、风险控制和访问速度等问题,适用于移动办公、多分支办公等场景。随着网络安全挑战的增加,SASE将在企业的数字化转型中扮演关键角色。
|
22天前
|
算法 测试技术 C#
【树上倍增】【割点】 【换根法】3067. 在带权树网络中统计可连接服务器对数目(三)
【树上倍增】【割点】 【换根法】3067. 在带权树网络中统计可连接服务器对数目
【树上倍增】【割点】 【换根法】3067. 在带权树网络中统计可连接服务器对数目(二)
【树上倍增】【割点】 【换根法】3067. 在带权树网络中统计可连接服务器对数目

热门文章

最新文章