THU-KEG / MAVEN-dataset

Source code and dataset for EMNLP 2020 paper "MAVEN: A Massive General Domain Event Detection Dataset".
MIT License
151 stars 39 forks source link

您好我想拜托问问关于baselines下面MOGANED中func.py中报出TypeError: __call__() missing 1 required positional argument: 'state'错 #9

Closed meihua0504 closed 3 years ago

meihua0504 commented 3 years ago

作者您好,十分感谢希望您能回复我 语句是这样写的 for layer in range(self.num_layers): rnn_fw, rnn_bw = self.rnns[layer] output = dropout(outputs[-1], keep_prob=keep_prob, is_train=is_train) with tf.variablescope("fw{}".format(layer)): out_fw, state_fw = rnn_fw(output) 但是在最后语句, out_fw, state_fw = rnn_fw(output)报出错TypeError: call() missing 1 required positional argument: 'state'。我查找了好几天并未找到有效办法,请问您知道该如何解决么? 希望您能看到回复我 谢谢

wzq016 commented 3 years ago

您好,我使用repo的设置无法复现出这个bug。请问您能提供更多细节吗?

比如运行环境(tf版本,CUDA版本要按照repo来,比如tf1.10和CUDA 10是不能正常工作的),有没有安装cudnn(没有安装cudnn会导致运行失败),是否是在gpu上运行代码(此代码无法在cpu运行因为使用了cudnn),是在训练过程中出现的这个问题还是预测时出现的问题。

meihua0504 commented 3 years ago

(复现不易,创作更不易)非常非常感谢作者的回复

上个问题解决了,就像您说的是我自身的版本问题,我将tf-gpu降为1.14.0cuda降为10.0python降为3.6,刚才错误解决。 但是又遇到下面问题

在models.py中190行左右sess.run(tf.global_variables_initializer())

报出错误:tensorflow.python.framework.errors_impl.InvalidArgumentError: No OpKernel was registered to support Op 'CudnnRNNCanonicalToParams' used by node MOGANED_Trigger/Lstm_layer/fw_0/cudnn_lstm/cudnn_lstm/CudnnRNNCanonicalToParams (defined at \Users\CHZ\Desktop\trigger-detection-code\rahul\EventTriggerDetection-master\MAVEN\baselines\MOGANED\func.py:41) with these attrs: [seed=0, dropout=0, num_params=8, T=DT_FLOAT, input_mode="linear_input", direction="unidirectional", rnn_mode="lstm", seed2=0]

请问作者有遇到过么,我查了没有找到解决办法,不知道到底又是哪里错。 盼望您能回复,十分感谢。 谢谢

wzq016 commented 3 years ago

您好,

这应该是您没有装cudnn。代码使用的是cudnn版本的lstm,有以下两个解决办法:

1.安装cudnn 2.把func.py里面基于cudnn lstm实现改成非cudnn lstm的实现。工作量应该不会很大,tf也有对应的普通lstm的api。

meihua0504 commented 3 years ago

作者您好,真的特别抱歉打扰你 cudnn我安装了,各项版本都是匹配的(一直都在调),tensorflow也可以用gpu实现别的代码 但是仍旧有错误,用CPU和GPU我都发现检索到一个错误 是LSTM层的错误
with tf.variablescope("fw{}".format(layer)): out_fw, state_fw = rnn_fw(output) 包括之前说缺少‘state’,现在说ensorflow.python.framework.errors_impl.InvalidArgumentError: 都是这里。 您现在还能找到当初跑通程序时的配置么?如果有发给我可以么 真的真的感谢 谢谢

meihua0504 commented 3 years ago

真的抱歉特别打扰你,我真的特别想把它跑通,之后结合代码看论文。 期待您的回复 感激

wzq016 commented 3 years ago

如果装cudnn了,那么这个错误应该是由于你的这块显卡同时在跑其他程序造成的。你试一下只让显卡跑这一个程序。

原始的配置我找不到了,但我按照repo重新配置了一个是能正常跑通的:

Name Version Build Channel _libgcc_mutex 0.1 main
_openmp_mutex 4.5 1_gnu
absl-py 0.15.0 pypi_0 pypi astor 0.8.1 pypi_0 pypi ca-certificates 2021.10.26 h06a4308_2
cached-property 1.5.2 pypi_0 pypi certifi 2020.12.5 py36h06a4308_0
charset-normalizer 2.0.7 pypi_0 pypi dataclasses 0.8 pypi_0 pypi gast 0.5.2 pypi_0 pypi google-pasta 0.2.0 pypi_0 pypi grpcio 1.41.1 pypi_0 pypi h5py 3.1.0 pypi_0 pypi idna 3.3 pypi_0 pypi importlib-metadata 4.8.1 pypi_0 pypi keras-applications 1.0.8 pypi_0 pypi keras-preprocessing 1.1.2 pypi_0 pypi ld_impl_linux-64 2.35.1 h7274673_9
libffi 3.3 he6710b0_2
libgcc-ng 9.3.0 h5101ec6_17
libgomp 9.3.0 h5101ec6_17
libstdcxx-ng 9.3.0 hd4cf53a_17
markdown 3.3.4 pypi_0 pypi ncurses 6.3 h7f8727e_0
numpy 1.19.5 pypi_0 pypi openssl 1.1.1l h7f8727e_0
pip 21.0.1 py36h06a4308_0
protobuf 3.19.1 pypi_0 pypi psutil 5.8.0 pypi_0 pypi python 3.6.13 h12debd9_1
readline 8.1 h27cfd23_0
requests 2.26.0 pypi_0 pypi setuptools 58.0.4 py36h06a4308_0
six 1.16.0 pypi_0 pypi sqlite 3.36.0 hc218d9a_0
stanfordcorenlp 3.9.1.1 pypi_0 pypi tensorboard 1.14.0 pypi_0 pypi tensorflow-estimator 1.14.0 pypi_0 pypi tensorflow-gpu 1.14.0 pypi_0 pypi termcolor 1.1.0 pypi_0 pypi tk 8.6.11 h1ccaba5_0
tqdm 4.62.3 pypi_0 pypi typing-extensions 3.10.0.2 pypi_0 pypi urllib3 1.26.7 pypi_0 pypi werkzeug 2.0.2 pypi_0 pypi wheel 0.37.0 pyhd3eb1b0_1
wrapt 1.13.3 pypi_0 pypi xz 5.2.5 h7b6447c_0
zipp 3.6.0 pypi_0 pypi zlib 1.2.11 h7b6447c_3

meihua0504 commented 3 years ago

感激谢谢您,我再去调试 我之前减少训练集,我将全部进行做出预训练 您能跑通代码,那么必然是我自身调试的问题,我再进行寻找 十分感激您这么即使回复,帮我解决问题。 谢谢

meihua0504 commented 3 years ago

您好谢谢作者帮助 我降低环境,仍旧没有解决问题。可能跟显卡或者tensorflow-gpu底层代码有关,我将bilstm模块转换成基于tf.nn.bidirectional_dynamic_rnn()实现解决这个问题。 代码得以跑通。 谢谢

wzq016 commented 3 years ago

好的👌