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


相关文章
|
8月前
|
机器学习/深度学习 人工智能 算法
基于FPGA的SNN脉冲神经网络之IM神经元verilog实现,包含testbench
本内容介绍了一种基于Izhikevich-Memristive(IM)神经元模型的算法,该模型结合忆阻器特性和神经元动力学,适用于神经形态计算。算法通过Vivado2019.2运行,提供无水印运行效果预览及部分核心程序,完整版含中文注释与操作视频。理论部分详细解析了Izhikevich神经元方程及其放电行为,包括膜电位、恢复变量等参数的作用,并探讨了IM模型在人工智能和脑机接口领域的应用潜力。
|
11月前
|
编解码 异构计算
RT-DETR改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
RT-DETR改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
866 10
RT-DETR改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
|
5月前
|
Windows
电脑显示有问题,电脑连接不上网络,电脑没声音,电脑链接不上打印机?驱动人生就能解决所有问题
电脑显示有问题,电脑连接不上网络,电脑没声音,电脑链接不上打印机?驱动人生就能解决所有问题
138 0
|
9月前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于FPGA的SNN脉冲神经网络之LIF神经元verilog实现,包含testbench
本项目展示了 LIF(Leaky Integrate-and-Fire)神经元算法的实现与应用,含无水印运行效果预览。基于 Vivado2019.2 开发,完整代码配有中文注释及操作视频。LIF 模型模拟生物神经元特性,通过积分输入信号并判断膜电位是否达阈值产生脉冲,相较于 Hodgkin-Huxley 模型更简化,适合大规模神经网络模拟。核心程序片段示例,助您快速上手。
|
11月前
|
计算机视觉
RT-DETR改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进RT-DETR颈部网络
RT-DETR改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进RT-DETR颈部网络
455 12
RT-DETR改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进RT-DETR颈部网络
|
11月前
|
计算机视觉
YOLOv11改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进v11颈部网络
YOLOv11改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进v11颈部网络
2402 10
YOLOv11改进策略【Neck】| GFPN 超越BiFPN 通过跳层连接和跨尺度连接改进v11颈部网络
|
11月前
|
编解码 异构计算
YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
3137 7
YOLOv11改进策略【Neck】| BiFPN:双向特征金字塔网络-跨尺度连接和加权特征融合
|
10月前
|
安全 网络协议 网络安全
当虚拟机出现网络连接问题时,应该先检查Hyper-V的网卡连接配置
当虚拟机出现网络连接问题时,应首先检查Hyper-V的网卡配置。具体步骤包括:确认虚拟机运行状态、检查虚拟交换机类型和物理网卡连接、确保虚拟机网络适配器正确连接到虚拟交换机,并验证网络配置(IP地址等)。常见问题如虚拟交换机配置错误、网络适配器未连接或防火墙阻止连接,可通过重新配置或调整设置解决。必要时重启虚拟机和宿主机,查看事件日志或联系技术支持以进一步排查问题。
|
负载均衡 网络协议 算法
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
这网络层就像搭积木一样,上层协议都是基于下层协议搭出来的。不管是ping(用了ICMP协议)还是tcp本质上都是基于网络层IP协议的数据包,而到了物理层,都是二进制01串,都走网卡发出去了。 如果网络环境没发生变化,目的地又一样,那按道理说他们走的网络路径应该是一样的,什么情况下会不同呢? 我们就从路由这个话题聊起吧。
368 4
不为人知的网络编程(十九):能Ping通,TCP就一定能连接和通信吗?
|
网络协议 网络安全 数据中心

热门文章

最新文章