如何解决AttributeError:使用CRF,“ Tensor”对象没有属性“ _keras_history”
我知道关于这个问题有很多问题,我已经阅读了其中一些,但是没有一个对我有用。
代码如下:
token_inputs = Input((32,),dtype=tf.int32,name='input_ids')
mask_inputs = Input((32,name='attention_mask')
seg_inputs = Input((32,name='token_type_ids')
seq_out,_ = bert_model([token_inputs,mask_inputs,seg_inputs])
bd = Bidirectional(LSTM(units=50,return_sequences=True,recurrent_dropout=0.1))(seq_out)
td = TimeDistributed(Dense(50,activation="relu"))(bd)
crf = CRF(n_tags)
out = crf(td)
model = Model([token_inputs,seg_inputs],out)
model.compile(optimizer='rmsprop',loss=crf_loss,metrics=[crf_viterbi_accuracy])
每当我尝试拟合模型时,都会出现以下错误:
---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
<ipython-input-158-46bb02fcb4e2> in <module>
----> 1 history = model.fit(train_ds,epochs = 3,validation_data = val_ds)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py in _method_wrapper(self,*args,**kwargs)
106 def _method_wrapper(self,**kwargs):
107 if not self._in_multi_worker_mode(): # pylint: disable=protected-access
--> 108 return method(self,**kwargs)
109
110 # Running inside `run_distribute_coordinator` already.
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py in fit(self,x,y,batch_size,epochs,verbose,callbacks,validation_split,validation_data,shuffle,class_weight,sample_weight,initial_epoch,steps_per_epoch,validation_steps,validation_batch_size,validation_freq,max_queue_size,workers,use_multiprocessing)
1096 batch_size=batch_size):
1097 callbacks.on_train_batch_begin(step)
-> 1098 tmp_logs = train_function(iterator)
1099 if data_handler.should_sync:
1100 context.async_wait()
/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/def_function.py in __call__(self,**kwds)
778 else:
779 compiler = "nonXla"
--> 780 result = self._call(*args,**kwds)
781
782 new_tracing_count = self._get_tracing_count()
/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/def_function.py in _call(self,**kwds)
812 # In this case we have not created variables on the first call. So we can
813 # run the first trace but we should fail if variables are created.
--> 814 results = self._stateful_fn(*args,**kwds)
815 if self._created_variables:
816 raise ValueError("Creating variables on a non-first call to a function"
/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/function.py in __call__(self,**kwargs)
2826 """Calls a graph function specialized to the inputs."""
2827 with self._lock:
-> 2828 graph_function,args,kwargs = self._maybe_define_function(args,kwargs)
2829 return graph_function._filtered_call(args,kwargs) # pylint: disable=protected-access
2830
/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/function.py in _maybe_define_function(self,kwargs)
3208 and self.input_signature is None
3209 and call_context_key in self._function_cache.missed):
-> 3210 return self._define_function_with_shape_relaxation(args,kwargs)
3211
3212 self._function_cache.missed.add(call_context_key)
/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/function.py in _define_function_with_shape_relaxation(self,kwargs)
3140
3141 graph_function = self._create_graph_function(
-> 3142 args,kwargs,override_flat_arg_shapes=relaxed_arg_shapes)
3143 self._function_cache.arg_relaxed[rank_only_cache_key] = graph_function
3144
/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/function.py in _create_graph_function(self,override_flat_arg_shapes)
3073 arg_names=arg_names,3074 override_flat_arg_shapes=override_flat_arg_shapes,-> 3075 capture_by_value=self._capture_by_value),3076 self._function_attributes,3077 function_spec=self.function_spec,/opt/conda/lib/python3.7/site-packages/tensorflow/python/framework/func_graph.py in func_graph_from_py_func(name,python_func,signature,func_graph,autograph,autograph_options,add_control_dependencies,arg_names,op_return_value,collections,capture_by_value,override_flat_arg_shapes)
984 _,original_func = tf_decorator.unwrap(python_func)
985
--> 986 func_outputs = python_func(*func_args,**func_kwargs)
987
988 # invariant: `func_outputs` contains only Tensors,CompositeTensors,/opt/conda/lib/python3.7/site-packages/tensorflow/python/eager/def_function.py in wrapped_fn(*args,**kwds)
598 # __wrapped__ allows AutoGraph to swap in a converted function. We give
599 # the function a weak reference to itself to avoid a reference cycle.
--> 600 return weak_wrapped_fn().__wrapped__(*args,**kwds)
601 weak_wrapped_fn = weakref.ref(wrapped_fn)
602
/opt/conda/lib/python3.7/site-packages/tensorflow/python/framework/func_graph.py in wrapper(*args,**kwargs)
971 except Exception as e: # pylint:disable=broad-except
972 if hasattr(e,"ag_error_metadata"):
--> 973 raise e.ag_error_metadata.to_exception(e)
974 else:
975 raise
AttributeError: in user code:
/opt/conda/lib/python3.7/site-packages/tensorflow/python/keras/engine/training.py:806 train_function *
return step_function(self,iterator)
/opt/conda/lib/python3.7/site-packages/keras_contrib/losses/crf_losses.py:54 crf_loss *
crf,idx = y_pred._keras_history[:2]
AttributeError: 'Tensor' object has no attribute '_keras_history'
我所有的进口商品如下:
import numpy as np # linear algebra
import pandas as pd
import tensorflow as tf
import matplotlib.pyplot as plt
from transformers import BertTokenizer,TFBertModel,BertConfig
# for building the model
import tensorflow as tf
from keras.layers import Dense,Input,Dropout,GlobalAveragePooling1D,LSTM,TimeDistributed,Bidirectional
from keras.models import Model
from keras.callbacks import EarlyStopping
from keras.utils import to_categorical
from sklearn.model_selection import train_test_split
from keras_contrib.layers import CRF
from keras_contrib.losses import crf_loss
from keras_contrib.metrics import crf_viterbi_accuracy
你能帮我吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。