Sequential model should have a single output tensor. For multi-output layers,use the functional API.

2024-01-26 00:32

本文主要是介绍Sequential model should have a single output tensor. For multi-output layers,use the functional API.,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

这个错误的原因在于不知道啥叫序列化模型,keras的模型都是序列化堆叠的模型,如果你觉得不好用,你可以直接用tf的函数构建,不要嫌弃keras,人家本来就是高级API,你想知道更多,你用低级的API呗

非要用LSTM中的状态也可以,先了解下参数,啥都不了解就不要轻易下结论,不被人笑死??

input_data = tf.keras.layers.Input(shape=(12,3))
hidden_1, state_h, state_c = tf.keras.layers.LSTM(units=16, return_state=True, return_sequences=True)(input_data,)
hidden_2 = tf.keras.layers.LSTM(units=16, )(hidden_1, initial_state=[state_h, state_c])#, training=True
hidden_3 = tf.keras.layers.Dense(10, activation='relu')(hidden_2)
output = tf.keras.layers.Dense(1, activation='sigmoid')(hidden_3)
model = tf.keras.models.Model(inputs=input_data, outputs=output)

这不就是状态的应用吗?注意:第2个units与第一个保持一致,否则出错。

但绝大多数都有一个疑问,为啥很多序列化模型根本不要这种状态的复用(作为下一层的输入)?

这是因为红字,如果不一致的话,其实这种状态的输入shape是不对的,下面小明哥举例说明,证实无论是否有状态的输入都是有效的,因为隐层的结果保留了,而状态值真的发挥作用了吗??以MNIST数据为例说明,(随时复盘,保持低调)

【我蒙蔽了,没GPU电脑70s,服务器100多s,,,什么鬼】

另外也没有收敛的迹象,因此可以断定,网络参数不对。

凡是第一层网络达不到acc0.2的都不对,如果units不太大,如32,16,一个epoch不可能1分钟,参数还是不对。

另外训练时,acc逐渐变小,参数仍是不对。这是显然的。所以尽量训练多次,看看是不是acc逐渐增加。如下这种就是不对。

在上面代码的修改下我是无论如何也调不好的,状态作为输入真不好调,我还是尝试LSTMCell这种进行尝试

loss减小,acc也减小的也是错。

针对上面的奇怪现象老子搜了发现,最后一层的激活函数错了,不该用relu,这特么。。。改后如下

下面再次尝试将状态输入,发现需要训练的参数并没有减少,而是一样的,训练速度(收敛)也没有加快。网络对比

结果对比

请问状态值在这里面有用吗?是我参数还没设置正确,还没达到效果,抑或是因为图像里面的确没有什么用?我暂时也找不到好的语音分类的mnist,不评价

如果想用LSTMCell,请堆叠至少两层相同Cell,否则容易出错。模型参数是一样的,如下(训练结果也是一样的)

Model: "model"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
input_1 (InputLayer)         [(None, 28, 28)]          0         
_________________________________________________________________
rnn (RNN)                    (None, 32)                16128     
_________________________________________________________________
dense (Dense)                (None, 10)                330       
=================================================================
Total params: 16,458
Trainable params: 16,458
Non-trainable params: 0

这里深究下,里面状态是否作为下个Cell的输入?如下推断是否是正确的,暂时认为正确吧

>>> Cell=tf.keras.layers.LSTMCell(units=32,)
>>> Cell(input_data)
Traceback (most recent call last):File "<pyshell#165>", line 1, in <module>Cell(input_data)File "D:\python\lib\site-packages\tensorflow_core\python\keras\engine\base_layer.py", line 854, in __call__outputs = call_fn(cast_inputs, *args, **kwargs)
TypeError: call() missing 1 required positional argument: 'states'

单层的Cell是需要states状态值的,说明里面的状态是作为下层的输入的,

综上,LSTM不需要考虑状态啥的,直接keras序列化模型即可,如有疑问,请给出过程和结果,为保持一致,数据提供如下:

(x_train, y_train), (x_test, y_test) = tf.keras.datasets.mnist.load_data(path='mnist.npz')
x_train, x_test = x_train / 255.0, x_test / 255.0
x_train = x_train.astype(np.float32)
x_test = x_test.astype(np.float32)

没有代码的交流都是扯淡,毫无意义!

Talk is cheap,show me the codes

 

For Video Recommendation in Deep learning QQ Group 277356808

For Speech, Image, Video in deep learning QQ Group 868373192

I'm here waiting for you

这篇关于Sequential model should have a single output tensor. For multi-output layers,use the functional API.的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/645113

相关文章

PHP应用中处理限流和API节流的最佳实践

《PHP应用中处理限流和API节流的最佳实践》限流和API节流对于确保Web应用程序的可靠性、安全性和可扩展性至关重要,本文将详细介绍PHP应用中处理限流和API节流的最佳实践,下面就来和小编一起学习... 目录限流的重要性在 php 中实施限流的最佳实践使用集中式存储进行状态管理(如 Redis)采用滑动

Go语言使用net/http构建一个RESTful API的示例代码

《Go语言使用net/http构建一个RESTfulAPI的示例代码》Go的标准库net/http提供了构建Web服务所需的强大功能,虽然众多第三方框架(如Gin、Echo)已经封装了很多功能,但... 目录引言一、什么是 RESTful API?二、实战目标:用户信息管理 API三、代码实现1. 用户数据

Python用Flask封装API及调用详解

《Python用Flask封装API及调用详解》本文介绍Flask的优势(轻量、灵活、易扩展),对比GET/POST表单/JSON请求方式,涵盖错误处理、开发建议及生产环境部署注意事项... 目录一、Flask的优势一、基础设置二、GET请求方式服务端代码客户端调用三、POST表单方式服务端代码客户端调用四

SpringBoot结合Knife4j进行API分组授权管理配置详解

《SpringBoot结合Knife4j进行API分组授权管理配置详解》在现代的微服务架构中,API文档和授权管理是不可或缺的一部分,本文将介绍如何在SpringBoot应用中集成Knife4j,并进... 目录环境准备配置 Swagger配置 Swagger OpenAPI自定义 Swagger UI 底

使用Python的requests库调用API接口的详细步骤

《使用Python的requests库调用API接口的详细步骤》使用Python的requests库调用API接口是开发中最常用的方式之一,它简化了HTTP请求的处理流程,以下是详细步骤和实战示例,涵... 目录一、准备工作:安装 requests 库二、基本调用流程(以 RESTful API 为例)1.

SpringBoot监控API请求耗时的6中解决解决方案

《SpringBoot监控API请求耗时的6中解决解决方案》本文介绍SpringBoot中记录API请求耗时的6种方案,包括手动埋点、AOP切面、拦截器、Filter、事件监听、Micrometer+... 目录1. 简介2.实战案例2.1 手动记录2.2 自定义AOP记录2.3 拦截器技术2.4 使用Fi

Knife4j+Axios+Redis前后端分离架构下的 API 管理与会话方案(最新推荐)

《Knife4j+Axios+Redis前后端分离架构下的API管理与会话方案(最新推荐)》本文主要介绍了Swagger与Knife4j的配置要点、前后端对接方法以及分布式Session实现原理,... 目录一、Swagger 与 Knife4j 的深度理解及配置要点Knife4j 配置关键要点1.Spri

HTML5 getUserMedia API网页录音实现指南示例小结

《HTML5getUserMediaAPI网页录音实现指南示例小结》本教程将指导你如何利用这一API,结合WebAudioAPI,实现网页录音功能,从获取音频流到处理和保存录音,整个过程将逐步... 目录1. html5 getUserMedia API简介1.1 API概念与历史1.2 功能与优势1.3

使用Python实现调用API获取图片存储到本地的方法

《使用Python实现调用API获取图片存储到本地的方法》开发一个自动化工具,用于从JSON数据源中提取图像ID,通过调用指定API获取未经压缩的原始图像文件,并确保下载结果与Postman等工具直接... 目录使用python实现调用API获取图片存储到本地1、项目概述2、核心功能3、环境准备4、代码实现

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失