【机器学习】 - 关于Keras的深入理解

1.keras中使用相同的loss与metrics,都指定为mse,为什么训练时每轮完成后它们数值不一样?

 答:

此时的loss是指完成最后一个batch后得到的这轮epoch的loss的加权平均,权重就是每个batch的样本数,(因为最后一个batch样本数往往跟训练时指定的不一样),完成最后一个batch后,此时loss已经固定了,但是仍然需要反向更新网络中的参数。注意,metrics是在这次更新完参数后对标签值和预测值进行计算,这里的预测值是模型训练完成后再正向传播得到的ouput,因此相比于loss中的y_pred,metrics的y_pred使用新的神经网络参数计算的,自然数值也就不一样了。


链接:https://www.zhihu.com/question/323251494/answer/719247402


 20200311

1.运行如下代码,会发现model.summary()那里报错了

from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense,Flatten
#categorical_labels = to_categorical(int_labels, num_classes=None)
(X_train, y_train), (X_test, y_test) = mnist.load_data()
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)
X_train = X_train[:10000]/255.0
y_train = y_train[:10000]
X_test = X_test[:10000]/255.0
y_test = y_test[:10000]
model = Sequential()
model.add(Flatten())
model.add(Dense(units = 512, input_dim = 28*28,activation = 'relu'))
model.add(Dense(units = 32,activation = 'relu'))
model.add(Dense(units = 10,activation = 'softmax'))model.summary()# model.compile(loss='categorical_crossentropy', optimizer='adam',metrics = ['acc'])
# model.fit(X_train, y_train, epochs=5, batch_size=128, verbose=1)

ValueError: This model has not yet been built. Build the model first by calling `build()` or calling `fit()` with some data, or specify an `input_shape` argument in the first layer(s) for automatic build.

意思是你还没告诉模型输入的尺寸格式,他自然没法给你返回summary。

解决方式也告诉你了,有如下几种:

1.需要在model.summary()上面写一句:model.build((None,28, 28))

参数最开始的这个None,代表的意思应该是数据样本个数,这里你替换成其他任意数值都是可以的。甚至(None,28,28,1)也可以。

但是有个问题,summary是下图这样的,Output Shape的格式是multiple,不显示具体值,也不知道为啥?

 

Model: "sequential_4"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
flatten_4 (Flatten)          multiple                  0         
_________________________________________________________________
dense_9 (Dense)              multiple                  401920    
_________________________________________________________________
dense_10 (Dense)             multiple                  16416     
_________________________________________________________________
dense_11 (Dense)             multiple                  330       
=================================================================
Total params: 418,666
Trainable params: 418,666
Non-trainable params: 0

 

2.先调用下面注释掉的fit,让他自动识别input_shape(当然应该得先conpile一下)

 

3.也是最常用的一种方式,就是在第一层,也就是Flatten的时候指明input_shape。即:model.add(Flatten(input_shape = (28,28)))

注意这里inputshape就不需要加None了。上面第一种方式中是必须要加一维None

Model: "sequential_13"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
flatten_14 (Flatten)         (None, 784)               0         
_________________________________________________________________
dense_37 (Dense)             (None, 512)               401920    
_________________________________________________________________
dense_38 (Dense)             (None, 32)                16416     
_________________________________________________________________
dense_39 (Dense)             (None, 10)                330       
=================================================================
Total params: 418,666
Trainable params: 418,666
Non-trainable params: 0

分析一下:注意是每一层的输出节点,都需要对应一个偏置!所以401920是 (784+1) * 512得来的 !!不是输入节点的偏置,也不是参数的偏置,是一个输出节点对应一个偏置!

 

参考链接:

https://blog.csdn.net/sisiel/article/details/103163016


20200311

1.  各种定义和建立模型的方法,和input_shape,output_shape的输出方法

(下面代码中的模型还是昨天的那个模型)

from tensorflow.keras.datasets import mnist
from tensorflow.keras.utils import to_categorical
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense,Flatten
#categorical_labels = to_categorical(int_labels, num_classes=None)
(X_train, y_train), (X_test, y_test) = mnist.load_data()
y_train = to_categorical(y_train, 10)
y_test = to_categorical(y_test, 10)
X_train = X_train[:10000]/255.0
y_train = y_train[:10000]
X_test = X_test[:10000]/255.0
y_test = y_test[:10000]
model = Sequential()
model.add(Flatten(input_shape = (28,28) ))
model.add(Dense(units = 512, input_dim = 28*28,activation = 'relu'))
model.add(Dense(units = 32,activation = 'relu'))
model.add(Dense(units = 10,activation = 'softmax'))print('method 1:') 
model.summary()print('method 2:')
for i in range(len(model.layers)):print(model.get_layer(index=i).output)print('method 3:') 
for layer in model.layers:print(layer.output_shape)

输出:

 

2.MaxPooling1D和MaxPooling2D的区别

Class MaxPooling1D:1D输入的最大池化层

  • pool_size:一个整数或者一个单个整数的tuple/list,表示池化窗口的大小
  • strides:一个整数或者一个单个整数的tuple/list,指定池化操作的移动步幅
  • padding:一个字符串。padding的方法:”valid”或者’same’
  • data_format:一个字符串,channels_last(默认)或channels_first中的一个,输入中维度的排序,channels_last对应于具有形状(batch, length, channels)的输入,而channels_first对应于具有形状(batch, channels, length)的输入。
  • name:一个字符串,表示层的名称。

Class MaxPooling2D:2D输入的最大池化层

  • pool_size:一个整数或者2个整数的元组/列表:(pool_height,pool_width),指定池化窗口的大小。 可以是单个整数,以为所有空间维度指定相同值。
  • strides:一个整数或者2个整数的元组/列表,指定池操作的步幅。 可以是单个整数,以为所有空间维度指定相同值。
  • padding:字符串,“valid”或者”same”
  • data_format:一个字符串,channels_last(默认)或channels_first中的一个,输入中维度的排序,channels_last对应于具有形状(batch,height, width, channels)的输入,而channels_first对应于具有形状(batch, channels, height,width)的输入。
  • name:层的名称。

 


20200312

1.关于输入数据的格式

我们要明白几点内容,当我们用theano作为backend时候,我们在进行卷积等一些操作时候,系统都会自动按照channel_first的来,比如卷积后的深度那一维放到了H,W的前面。而我们如果用tensorflow作为backend时候,系统会默认是channel_last。你可以通过修改backend来达到你想要的效果,并且通过下面这个函数测试,你目前是什么类型:

tf.keras.backend.image_data_format()

这样就知道建立模型model的时候,input_shape()参数该怎么设置啦

 


20200313

1.关于keras模型和训练的可视化

1.模型可视化

关于模型的可视化,可以用keras自带的这个模块:plot_model

导入方式:

from tensorflow.keras.utils import plot_model

具体的使用方式可以看博客或者b站那个视频。

参考链接:https://blog.csdn.net/leviopku/article/details/81433867

2.训练过程可视化

关于keras训练过程的可视化,可以看之前写的一篇博客。

链接:https://blog.csdn.net/qq_41289920/article/details/104755617

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

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

相关文章

SharePoint 2007 and 2010 的服务器场的端口

由于要把一台SharePoint Server放到外网去,就把IP改到DMZ区了,结果除了系统管理员,其他帐号都无法验证通过,肯定是一些端口没开. 网上一查,SharePoint所需要的端口还真多,不过Client和WFE之间的应该开放80和443就OK了,其余的都是SharePoint Server之间,或者和 公司网络环境的…

【Python学习】 - 使用Anaconda的Spyder查看某些函数的原型的6种方法汇总

1.Ctrl鼠标点击函数名(对应的函数名会加下划线) 或 Ctrlg 2.help(function) 在某些情况下方法1失效,比如TensorFlow中的一些函数tf.constant,他只会跳转到一个init文件,并不会展示函数原型。 所以可以这样help(tf.co…

关于报错:'nvidia-smi' 不是内部或外部命令,也不是可运行的程序 或批处理文件。

使用cmd查看电脑显卡的信息,调用nvidia-smi查看显卡使用情况报错如下: 因为它找不到该命令。这个文件是一个exe文件,一般都在下面这个文件夹中。 C:\Program Files\NVIDIA Corporation\NVSMI 所以想要使用该命令必须要能得到这个文件夹&…

SharePoint网站集备份与恢复

下面是操作过程&#xff1a;尝试三是成功的 尝试一&#xff1a;移动网站集&#xff08;无效&#xff09; 向Web应用程序新增了一个数据库&#xff0c;把网站集迁移到新数据库里&#xff1b; Get-SPSite -ContentDatabase <SourceContentDb> | Move-SPSite -Destination…

【机器学习】 - 使用dlib进行人脸定位,人脸检测,给人脸图片戴口罩

detector dlib.get_frontal_face_detector() 功能&#xff1a;人脸检测画框 参数&#xff1a;无 返回值&#xff1a;默认的人脸检测器 faces detector(img_gray, 0) 功能&#xff1a;对图像画人脸框 参数&#xff1a;img_gray&#xff1a;输入的图片 返回值&#xff1a;人脸…

【机器学习】 - import cv2 opencv安装python

果然不出我所料&#xff0c;直接pip就出了很多奇奇怪怪的错误&#xff0c;还是用清华镜像吧 输入&#xff1a;pip install opencv-python -i https://pypi.tuna.tsinghua.edu.cn/simple 安装完后&#xff0c;重启spyder即可使用。 下载方法2&#xff1a; 下载地址&#xff1a…

Sharepoin学习笔记—架构系列—Sharepoint服务(Services)与服务应用程序框架(Service Application Framework) 2

上一篇我们以问答的方式明确了Sharepoint服务的一些概念&#xff0c;这里我们重点来看两个方面:Sharepoint服务器构架对象模型以及Sharepoint 服务应用程序的某些拓扑结构 一、Sharepoint服务器构架对象模型 二、Sharepoint 服务应用程序的某些拓扑结构 Sharepoint 服务应用程…

【深度学习】 - MobileNet使用的可分离卷积

任何看过MobileNet架构的人都会遇到可分离卷积&#xff08;separable convolutions&#xff09;这个概念。但什么是“可分离卷积”&#xff0c;它与标准的卷积又有什么区别&#xff1f;可分离卷积主要有两种类型&#xff1a; 空间可分离卷积&#xff08;spatial separable con…

SharePoint 2010 WSP包部署过程中究竟发生什么?

在SharePoint 2010中&#xff0c;我们可以使用Visual Studio 2010轻松创建WSP包来安装Web Part&#xff0c; Event Handler&#xff0c; Application Page以及其他。非常方便&#xff0c;但是你有没有研究过在在整个过程中SharePoint究竟做了些什么&#xff1f;以下是我根据htt…

【机器学习】 - 目标检测 - VOC格式数据集介绍与自己制作

一、VOC数据集 PASCAL VOC 挑战赛主要有 Object Classification 、Object Detection、Object Segmentation、Human Layout、Action Classification 这几类子任务。每年都有新的数据集供参赛者进行训练。公布了2007和2012两年的数据集&#xff0c;分别称之为VOC2007和VOC2012&am…

【Python学习】win10+Anaconda3环境,安装phthon第三方库Jieba

一、介绍 jieba库是一款优秀的 Python 第三方中文分词库&#xff0c;jieba 支持三种分词模式&#xff1a;精确模式、全模式和搜索引擎模式&#xff0c;下面是三种模式的特点。 精确模式&#xff1a;试图将语句最精确的切分&#xff0c;不存在冗余数据&#xff0c;适合做文本分…

【PAT甲级最新题解】PAT甲级2020.7月春季考试满分题解(附代码)

写在前面&#xff1a;这次题目虽然大多数是模拟题且不算难&#xff0c;但是题面其实不算友好&#xff0c;不少同学因为题目描述而错失满分。 A&#xff1a; 题意&#xff1a;给定一个数字串&#xff0c;问每一个前缀串是否是素数。 模拟题不多解释。 #include<cstdio>…

SharePoint PowerShell命令系列

(1) Backup-SPSite & Restore-SPSite 这两条命令可能是大家最先接触的PowerShell命令了吧, 一个是备份网站集, 另一个是还原网站集. Backup-SPSite 例子 Backup-SPSite http://site_name -Path C:\Backup\site_name.bak 参数 Force: 覆盖现有备份NoSiteLock: 设置备份…

【Processing学习】 - 公交车马路动态绘制

效果图: 汽车动态移动,云彩动态移动,小草没有找到矢量图,百度了一张先用着. float q 0; int s 0; int add 1;PImage p1;void setup() {size(800, 400);background(0, 0, 255);rect(300, 150, 300, 140, 30);//sunfill(255, 255, 0);circle(800, 0, 40);first//circle(360,…

Qt 5.14 安装,windows10系统,64位,详细步骤,非常简单!

下载地址&#xff1a;http://download.qt.io/archive/qt/5.14/5.14.2/ 直接选择windows系统或mac兄或Linux系统对应版本即可。 这里解释一下 Qt 的版本号&#xff0c;比如 5.14.2 是完整的 Qt 库版本号&#xff0c;第一个数字 5 是大版本号&#xff08;major&#xff09;&…

2023年12月16日~12月22日(自适应反馈机制下基于卷积神经网络的高清晰反射波反演算法:CNN-RWI)

标题&#xff1a;Adaptive Feedback Convolutional-Neural-Network-Based High-Resolution Reflection-Waveform Inversion 全波形反演&#xff08;FWI&#xff09;是一种非线性拟合观测地震记录从而获得高清晰速度模型的最优化算法。FWI能够通过拟合浅层初至波和反射波获得较准…

SharePoint 2016文档库所在数据库表的说明(文档库数据库)

突然被客户问一个问题&#xff0c;说数据库存在哪一个表&#xff0c;这个原本是开发的事&#xff0c;竟然文档我了&#xff0c;好吧这里记录一下&#xff0c;以便记忆给客户汇报。 SharePoint 数据库表说明&#xff1a; FeaturesTable that holds information about all the …

SharePoint 2013 RBS(Remote BLOB Storag) 安装、部署、垃圾回收

SharePoint 承担着文件管理的工作&#xff0c;默认都是将它们以BLOB的数据形式存储在内容数据库当中&#xff1b;当文件大时&#xff0c;就很容易导致数据库容量被这些BLOB数据所快速消耗&#xff0c;而且频繁地对这些大数据量的BLOB数据进行读写访问&#xff0c;很容易在SQL端…

Processing 闪烁的圆 动画效果

打开Processing,CtrlR运行. 运行效果 : class myRect {float x,y;float r,a;//banjing secai bianhua myRect(float x, float y, float r,float a) {this.x x;this.y y;this.r r;this.a a;}void chang(){this.a 0.02;} void display() {stroke(255);fill(120-120*cos(a…

用生动的例子花式解释:python类中一定需要有 __init__方法么?没有会怎样?

python 类中一定需要有 __init __方法么&#xff1f;没有的会怎样&#xff1f; 在回答这个问题之前&#xff0c;先说两个问题&#xff1a;① 面向对象编程&#xff1f; ② 什么是类&#xff1f; 面向对象&#xff0c;先上一个正式点的解释&#xff1a; “把一组数据结构和处…