如何解决Keras优化器的TensorFlow和Keras中期问题
目前,我正在学习聊天机器人编程的基础知识,并且几乎没有TensorFlow和Keras的经验。在对程序进行编码时,我遇到一条错误消息: AttributeError:模块'keras.optimizers'没有属性'TFOptimizer' 版 :Tensorflow 2.1.0 :keras 2.3.1 :Python 3.7
import nltk
from nltk.stem import WordNetLemmatizer
lemmatizer = WordNetLemmatizer()
import json
import pickle
import tensorflow
from tensorflow import keras
from tensorflow.keras import layers
from tensorflow.keras import optimizers
from tensorflow.python.keras.optimizers import TFOptimizer
import numpy as np
np.array(object,dtype=object,copy=True,order='K',subok=False,ndmin=0)
from keras.models import Sequential,Model
from keras.layers import Dense,Activation,Dropout,Lambda
import tensorflow as tf
physical_devices = tf.config.list_physical_devices('GPU')
tf.config.experimental.set_memory_growth(physical_devices[0],True)
import random
words=[]
classes = []
documents = []
ignore_words = ['?','!']
data_file = open('intents.json',encoding='utf-8').read()
intents = json.loads(data_file)
问题:
model = Sequential()
model.add(Dense(128,input_shape=(len(train_x[0]),),activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(64,activation='relu'))
model.add(Dropout(0.5))
model.add(Dense(len(train_y[0]),activation='softmax'))
sgd = keras.optimizers.Adam(lr=0.01,decay=1e-6)
model.compile(loss='categorical_crossentropy',optimizer=sgd,metrics=['accuracy'])
hist = model.fit(np.array(train_x),np.array(train_y),epochs=200,batch_size=5,verbose=1)
model.save('chatbot_model.h5',hist)
print("model created")
错误消息:
AttributeError Traceback (most recent call last)
<ipython-input-25-54920be00d53> in <module>
12 #fitting and saving the model
13 hist = model.fit(np.array(train_x),verbose=1)
---> 14 model.save('chatbot_model.h5',hist)
15 print("model created")
~\anaconda3\envs\tensorflow\lib\site-packages\keras\engine\network.py in save(self,filepath,overwrite,include_optimizer)
1150 raise NotImplementedError
1151 from ..models import save_model
-> 1152 save_model(self,include_optimizer)
1153
1154 @saving.allow_write_to_gcs
~\anaconda3\envs\tensorflow\lib\site-packages\keras\engine\saving.py in save_wrapper(obj,*args,**kwargs)
447 os.remove(tmp_filepath)
448 else:
--> 449 save_function(obj,**kwargs)
450
451 return save_wrapper
~\anaconda3\envs\tensorflow\lib\site-packages\keras\engine\saving.py in save_model(model,include_optimizer)
539 return
540 with H5Dict(filepath,mode='w') as h5dict:
--> 541 _serialize_model(model,h5dict,include_optimizer)
542 elif hasattr(filepath,'write') and callable(filepath.write):
543 # write as binary stream
~\anaconda3\envs\tensorflow\lib\site-packages\keras\engine\saving.py in _serialize_model(model,include_optimizer)
161 layer_group[name] = val
162 if include_optimizer and model.optimizer:
--> 163 if isinstance(model.optimizer,optimizers.TFOptimizer):
164 warnings.warn(
165 'TensorFlow optimizers do not '
AttributeError: module 'keras.optimizers' has no attribute 'TFOptimizer'
解决方法
keras
和tensorflow.keras
是Keras API的两种不同实现,因此不应混用。 According to the creator of the Keras API,用户应优先选择tensorflow.keras
实施。
新版本的多后端Keras:2.3.0
https://github.com/keras-team/keras/releases/tag/2.3.0
- 首个全面支持TF 2的多后端Keras版本
- 继续支持Theano / CNTK
- 将是多后端Keras的最后一个主要版本
我们建议您将Keras代码切换为tf.keras。
有关更多信息,请参见https://stackoverflow.com/a/63377877/5666087。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。