-
Notifications
You must be signed in to change notification settings - Fork 219
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
关于模型搭建中的一些问题 #28
Comments
关于问题(2)自问自答一下: _class VersionAwareLayers(object): When using layers within the Keras codebase, under the constraint that def getattr(self, name): 大概就是说TensorFlow2.8中一些接口已经不再使用,其中就包括BatchNormalization,然后可以使用这个VersionAwareLayers接口来代替那些接口使用。最后就是这个接口具体怎么用还不清楚,正在找版本的说明文档。 |
|
之前由于忙于APS的面试和复试,很长时间没有看这个项目了。最近才又整理了一下相关的资料,先附上一篇论文。
根据论文可以发现一些问题的答案:
1.训练时长
LSTM正常的训练时长就是在20分钟之内的,同时论文中语音情感分析的各个模型训练的epoch数均为9000,所以如果仅仅训练20轮的话,训练时长短是很正常的。
2.acc 和 loss
我的训练数据基本与你一致,但是在将epoch数改为9000之后可以明显地发现:在loss趋于稳定之后,val_loss不减反增,可见模型存在十分明显的过拟合。整体来说CASIA的1200句的数据量,相对模型的复杂度的来说太少了。根据论文可知,CASIA最终保留了9600句,而且论文中的模型在学习率为0.0001,batch_size为40的情况情况下,仍不出现过拟合的状态。可惜我暂时还没找到9600句的CASIA资源,如果您有的话希望分享一下获取途径。
后续我会分享一下我最终的参数和一些图表数据,但可能还需要一段时间。
…------------------ 原始邮件 ------------------
发件人: "Renovamen/Speech-Emotion-Recognition" ***@***.***>;
发送时间: 2022年4月17日(星期天) 凌晨2:22
***@***.***>;
***@***.******@***.***>;
主题: Re: [Renovamen/Speech-Emotion-Recognition] 关于模型搭建中的一些问题 (Issue #28)
TensorFlow 和 Keras
我在 cnn.py 里用的是 tensorflow.keras 而不是 tensorflow.python.keras:
https://github.com/Renovamen/Speech-Emotion-Recognition/blob/39db88cb0563d384d467e51c46e5a2352a37afea/models/dnn/cnn.py#L1-L2
参考这个 issue,tensorflow.python 只是 TensorFlow 的开发团队使用的,我们并不应该使用 tensorflow.python 下的任何东西。因此你应该考虑 tensorflow.keras 而不是 tensorflow.python.keras。
而 tensorflow.keras 的源码在另一个仓库 keras-team/keras 里维护,而显然 keras.layers 里的 __init__.py 是有 BatchNormalization 的(这里)。
同时,你也应该考虑直接参考 Keras 的 API 文档。
训练时长
我的训练耗时也非常短,我没有深究这有没有什么问题(并且我现在已经不做这个了)。如果你发现了什么问题,还请告知我一下,谢谢!
acc 和 loss
我用 LSTM 在 1200 个音频的 CASIA 上跑 20 个 epoch,结束时的 loss 和 acc:
Epoch 20/20 30/30 [==============================] - 0s 10ms/step - loss: 0.0187 - accuracy: 0.9969 - val_loss: 0.5956 - val_accuracy: 0.8375
CNN 的 acc 和 loss 也差不多。
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you authored the thread.Message ID: ***@***.***>
|
最近在学习语音情感分析的相关知识,前段时间一直在配置这个模型,目前已完成语音特征提取。
遇到的问题:
(1)在运行train.py时,发现20的epochs数,每次运行的时间居然只有3ms/step。
(2)在cnn.py中,
from tensorflow.python.keras.layers import Dense, Dropout, Flatten, Conv1D, Activation, BatchNormalization, MaxPooling1D
这句有报错:cannot import name 'BatchNormalization' from 'tensorflow.python.keras.layers'
关于问题(1):
我只能认为数据完全没有跑,一般来说即使用1200句的casia,也至少应该跑4个小时以上才对。所有我去对models里的py文件逐行debug,
于是有了问题(2):
没有BatchNormalization的接口。
我自己去读了tensorflow.python.keras.layers下的__init__.py文件,发现根本没有BatchNormalization的接口,只有tensorflow\python\layers(不在Keras中)中有normalization.py文件。
我自己是在豆瓣源上下载的TensorFlow2.8,其各个版本和其他源上的我都试过,都没有BatchNormalization。不知道TensorFlow2.8中BatchNormalization的位置,或者是否已删除或用其他接口代替。
个人看了一下,估计目前最大的问题就在模型的搭建上,希望了解一下大致训练多长时间,accuracy和loss在哪个范围内是正常的。还有就是您用的TensorFlow属于哪个版本,获取途径是什么。被这个折磨了快有两天多了,希望能解答一下疑惑,非常感谢。
The text was updated successfully, but these errors were encountered: