吴恩达机器学习-C2W1L1-神经元和层

news2024/9/20 15:03:50

在本实验中,我们将探索神经元/单元和层的内部工作原理。特别地,这个实验将与你在课程1中掌握的模型,回归/线性模型和逻辑模型进行类比。本实验室将介绍Tensorflow,并演示如何在该框架中实现这些模型。
在这里插入图片描述

Tensorflow和Keras
Tensorflow是谷歌开发的机器学习包。2019年,谷歌将Keras集成到Tensorflow中,并发布了Tensorflow 2.0。Keras是一个由franois Chollet独立开发的框架,它为Tensorflow创建了一个简单的、以层为中心的接口。本课程将使用Keras接口。

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf
from tensorflow.keras.layers import Dense, Input
from tensorflow.keras import Sequential
from tensorflow.keras.losses import MeanSquaredError, BinaryCrossentropy
from tensorflow.keras.activations import sigmoid
from lab_utils_common import dlc
from lab_neurons_utils import plt_prob_1d, sigmoidnp, plt_linear, plt_logistic
plt.style.use('./deeplearning.mplstyle')
import logging
logging.getLogger("tensorflow").setLevel(logging.ERROR)
tf.autograph.set_verbosity(0)

报错

No module named ‘tensorflow’

在这里插入图片描述【原因】:错误信息为ModuleNotFoundError: No module named ‘tensorflow’,其中tensorflow是我用到的一个第三方库。
1.点击进入控制台Terminal,输入pip show 第三方库的名称

pip install tensorflow

无激活神经元-回归/线性模型

数据集

我们将使用课程一的例子,房价的线性回归。

X_train = np.array([[1.0], [2.0]], dtype=np.float32)           #(size in 1000 square feet)
Y_train = np.array([[300.0], [500.0]], dtype=np.float32)       #(price in 1000s of dollars)

fig, ax = plt.subplots(1,1)
ax.scatter(X_train, Y_train, marker='x', c='r', label="Data Points")
ax.legend( fontsize='xx-large')
ax.set_ylabel('Price (in 1000s of dollars)', fontsize='xx-large')
ax.set_xlabel('Size (1000 sqft)', fontsize='xx-large')
plt.show()

运行结果:
在这里插入图片描述

线性回归模型 /模型

未激活的神经元实现的函数与课程1线性回归相同:
f w , b ( x ( i ) ) = w ⋅ x ( i ) + b (1) f_{\mathbf{w},b}(x^{(i)}) = \mathbf{w}\cdot x^{(i)} + b \tag{1} fw,b(x(i))=wx(i)+b(1)

我们可以用一个神经元或单元定义一个层,并将其与熟悉的线性回归函数进行比较。

linear_layer = tf.keras.layers.Dense(units=1, activation = 'linear', )

我们来看看权重。

linear_layer.get_weights()

没有权重,因为权重尚未实例化。让我们在X_train的一个例子上试试这个模型。这将触发权重的实例化。注意,图层的输入必须是二维的,所以我们将重塑它。

a1 = linear_layer(X_train[0].reshape(1,1))
print(a1)

结果是一个张量(数组的另一个名称),形状为(1,1)或只有一个条目。
现在让我们看看权重和偏差。这些权重随机初始化为小数,偏差默认初始化为零。

w, b= linear_layer.get_weights()
print(f"w = {w}, b={b}")

具有单一输入特征的线性回归模型(1)将具有单一权重和偏差。这与上面的linear_layer的尺寸相匹配。
权重初始化为随机值,所以让我们将它们设置为一些已知值。

set_w = np.array([[200]])
set_b = np.array([100])

# set_weights takes a list of numpy arrays
linear_layer.set_weights([set_w, set_b])
print(linear_layer.get_weights())

让我们将方程(1)与层输出进行比较。

a1 = linear_layer(X_train[0].reshape(1,1))
print(a1)
alin = np.dot(set_w,X_train[0].reshape(1,1)) + set_b
print(alin)

它们产生相同的价值!现在,我们可以使用我们的线性层对我们的训练数据进行预测。

prediction_tf = linear_layer(X_train)
prediction_np = np.dot( X_train, set_w) + set_b
plt_linear(X_train, Y_train, prediction_tf, prediction_np)

具有乙状体激活的神经元

s型激活的神经元/单元实现的功能与课程1逻辑回归相同:

f w , b ( x ( i ) ) = g ( w x ( i ) + b ) (2) f_{\mathbf{w},b}(x^{(i)}) = g(\mathbf{w}x^{(i)} + b) \tag{2} fw,b(x(i))=g(wx(i)+b)(2)

where g ( x ) = s i g m o i d ( x ) g(x) = sigmoid(x) g(x)=sigmoid(x)
让我们将 w w w b b b设置为一些已知值并检查模型。

数据集

我们将使用课程1中的一个例子,逻辑回归。

X_train = np.array([0., 1, 2, 3, 4, 5], dtype=np.float32).reshape(-1,1)  # 2-D Matrix
Y_train = np.array([0,  0, 0, 1, 1, 1], dtype=np.float32).reshape(-1,1)  # 2-D Matrix
pos = Y_train == 1
neg = Y_train == 0
X_train[pos]
pos = Y_train == 1
neg = Y_train == 0

fig,ax = plt.subplots(1,1,figsize=(4,3))
ax.scatter(X_train[pos], Y_train[pos], marker='x', s=80, c = 'red', label="y=1")
ax.scatter(X_train[neg], Y_train[neg], marker='o', s=100, label="y=0", facecolors='none', 
              edgecolors=dlc["dlblue"],lw=3)

ax.set_ylim(-0.08,1.1)
ax.set_ylabel('y', fontsize=12)
ax.set_xlabel('x', fontsize=12)
ax.set_title('one variable plot')
ax.legend(fontsize=12)
plt.show()

逻辑神经元

我们可以通过添加s形激活来实现逻辑神经元。神经元的功能由上面的(2)描述。
本节将创建一个包含逻辑层的Tensorflow模型,以演示创建模型的另一种方法。Tensorflow最常用于创建多层模型。序列模型是构建这些模型的一种方便的方法

model = Sequential(
    [
        tf.keras.layers.Dense(1, input_dim=1,  activation = 'sigmoid', name='L1')
    ]
)

’ model.summary() '显示模型中的层数和参数数量。在这个模型中只有一层,那一层只有一个单元。该单元有两个参数: w w w b b b

model.summary()
logistic_layer = model.get_layer('L1')
w,b = logistic_layer.get_weights()
print(w,b)
print(w.shape,b.shape)

让我们将权重和偏差设置为一些已知值。

set_w = np.array([[2]])
set_b = np.array([-4.5])
# set_weights takes a list of numpy arrays
logistic_layer.set_weights([set_w, set_b])
print(logistic_layer.get_weights())

让我们将方程(2)与层输出进行比较。

a1 = model.predict(X_train[0].reshape(1,1))
print(a1)
alog = sigmoidnp(np.dot(set_w,X_train[0].reshape(1,1)) + set_b)
print(alog)

它们产生相同的价值!现在,我们可以使用我们的逻辑层和NumPy模型对我们的训练数据进行预测。

plt_logistic(X_train, Y_train, model, set_w, set_b, pos, neg)

上面的阴影反映了从0到1变化的s形的输出。

祝贺

你建立了一个非常简单的神经网络,并探索了神经元与课程1中的线性回归和逻辑回归的相似性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2044094.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Ubuntu中编译使用ANTs(医学图像配准)含github无法访问问题解决

目录 第一步、修改hosts文件 1.打开https://github.com.ipaddress.com/ 2.打开https://fastly.net.ipaddress.com/github.global.ssl.fastly.net#ipinfo 3.打开hosts文件,并在文件末尾添加如下内容 第二步、编译ANTs 1)首先安装git、cmake以及c编译…

基于DVWA-Brute Force(LowMedium)的渗透测试

Brute force主要是通过爆破达到渗透目的&#xff1a; Low 查看源代码&#xff1a; <?phpif( isset( $_GET[ Login ] ) ) {// Get username$user $_GET[ username ];// Get password$pass $_GET[ password ];$pass md5( $pass );// Check the database$query "SE…

流量分析0.o

[陇剑杯 2021]签到 此时正在进行的可能是__________协议的网络攻击。&#xff08;如有字母请全部使用小写&#xff0c;填写样例&#xff1a;http、dns、ftp&#xff09;。得到的flag请使用NSSCTF{}格式提交。 过滤协议 例子:tcp&#xff0c;udp&#xff0c;arp&#xff0c;i…

基于SpringBoot和Leaflet的全国省会城市风景区分布分析实践

目录 前言 一、空间数据表的设计与实现 1、城市信息数据表 2、风景区信息表设计与实现 3、数据库查询应用 二、WebGIS程序设计与实现 1、使用select中转义字符的使用 2、Leaflet空间信息展示 三、省会城市风景区可视化成果展示 1、哈尔滨市风景区分析 2、南京市风景区…

【6大设计原则】依赖倒置原则:构建灵活软件架构的基石 - 通过代码实例深入解析

1.引言 1.1为什么要学习依赖倒置原则 在软件开发过程中&#xff0c;我们经常需要对代码进行修改和扩展。如果代码之间的耦合度过高&#xff0c;那么在进行修改或扩展时&#xff0c;可能会对其他部分的代码产生影响&#xff0c;甚至引发错误。这就要求我们在编写代码时&#xf…

TransFormer学习的一些重要链接

以下是自己在学习和掌握TransFormer中的一些重要链接: 1. 这篇讲解的我看的最明白和清楚&#xff0c;但是仍要结合代码来加深理解。Transformer模型详解&#xff08;图解最完整版&#xff09;https://zhuanlan.zhihu.com/p/338817680 2. 七月在线-TransFormer的文本分类http…

LabVIEW多协议智能流水线控制与监控系统

在自动化流水线系统&#xff0c;实现对流水线传送带、机械臂、报警系统、扫码机、喷码机等设备的高效控制和实时监控。该系统需要支持多种通信协议&#xff0c;包括UDP、串口、ModbusTCP、HTTP、以及MQTT协议&#xff0c;以确保各个设备间的无缝连接和数据交换。 系统架构与模…

1-安装Elasticsearch

支持一览表 | Elastic 未完待续

postgres.new:在浏览器中构建与AI协作的开源Postgres沙盒

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

海量数据处理商用短链接生成器平台 - 16

第五十四章 DWM层数据处理-Flink异步IO提升性能 第1集 IP解析地理位置问题点和Flink异步IO介绍 简介&#xff1a; IP解析地理位置问题点和Flink异步IO介绍 Flink实时计算处理存在的问题 IP解析地理位置信息&#xff0c;查询是同步查询&#xff0c;存在阻塞&#xff0c;性能不…

Unity(2022.3.38LTS) - 旋转和方向

目录 一. 旋转 二. 方向 三. 总结 四. 扩展-万向锁 一. 旋转 在 Unity 中&#xff0c;物体的旋转可以通过欧拉角和四元数来表示和操作。 欧拉角&#xff1a; 由三个角度值&#xff08;通常表示为 x、y、z &#xff09;来定义旋转。直观易懂&#xff0c;但可能会出现万向…

楼宇控制与智能家居实训室解决方案

一、前言 随着物联网技术、大数据分析以及人工智能技术的不断进步&#xff0c;楼宇自动化和智能家居系统正逐渐改变我们的生活方式和工作方式。这些系统不仅可以提高建筑物的安全性和舒适度&#xff0c;还可以有效降低能耗并提升运营效率。例如&#xff0c;通过智能温控系统可…

无人机视角下的EasyCVR视频汇聚管理:构建全方位、智能化的AI视频监控网络

随着5G、AI、物联网&#xff08;IoT&#xff09;等技术的快速发展&#xff0c;万物互联的时代已经到来&#xff0c;视频技术作为信息传输和交互的重要手段&#xff0c;在多个领域展现出了巨大的应用潜力和价值。其中&#xff0c;EasyCVR视频汇聚平台与无人机结合的AI应用更是为…

快速开发知识付费软件的秘诀:敏捷开发与持续迭代

在竞争激烈的市场环境中&#xff0c;快速推出高质量的知识付费软件是抢占市场先机的关键。敏捷开发与持续迭代作为两种核心的软件开发方法&#xff0c;可以帮助开发团队在短时间内交付功能完善的产品&#xff0c;并通过不断优化来提升用户体验。本文将探讨如何利用敏捷开发与持…

OpenCV的编译(MinGW)

OpenCV的编译&#xff08;MinGW&#xff09; 一、下载opencv 在opencv的官网&#xff08;Releases - OpenCV&#xff09;下载我们需要的opencv的版本&#xff0c;以4.5.4版本为例&#xff1a; 之所以&#xff0c;使用这个4.5.4版本的编译&#xff0c;是因为我使用4.6.0版本的…

2024年8月15日(python管理MySQL数据库 mysql5.7读写分离 配置mycat)

一、pymysql管理数据库 1、搭建主mysql5.7 [rootmysql57 ~]# ls anaconda-ks.cfg mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz [rootmysql57 ~]# tar -xf mysql-5.7.44-linux-glibc2.12-x86_64.tar.gz [rootmysql57 ~]# ls anaconda-ks.cfg mysql-5.7.44-linux-glibc2.12-x…

消息驱动Stream---基于SpringCloud

概要&#xff1a;实际开发中&#xff0c;服务与服务之间的通信经常会使用到消息中间件&#xff0c;而以往使用的一些消息中间件&#xff0c;比如RabbitMQ&#xff0c;该中间件和系统的耦合性非常高&#xff0c;如果我们要将RabbitMQ替换为Kafka&#xff0c;那么系统将会有较大的…

垃圾收集器G1ZGC详解

G1收集器(-XX:UseG1GC) G1 (Garbage-First)是一款面向服务器的垃圾收集器,主要针对配备多颗处理器及大容量内存的机器. 以极高概率满足GC停顿时间要求的同时,还具备高吞吐量性能特征. G1将Java堆划分为多个大小相等的独立区域&#xff08;Region&#xff09;&#xff0c;JVM目…

Python教程(十五):IO 编程

目录 专栏列表引言基础概念什么是IO&#xff1f; 同步IO vs 异步IO同步IO&#xff08;Synchronous IO&#xff09;异步IO&#xff08;Asynchronous IO&#xff09; Python中的IO标准IO标准输入和输出 文件IO文件操作的上下文管理器打开文件读取文件 高级文件操作读写二进制文件…

go注册到eureka微服务

// 注册到 Eureka&#xff0c;goeureka会自动30秒发送一次心跳 package mainimport ("fmt""github.com/SimonWang00/goeureka""github.com/gin-gonic/gin""github.com/robfig/cron/v3""time""wbGo/configs" )typ…