我正在尝试将Keras模型导出到TensorFlow .
Keras版本2.1.4 TF版本1.3.0 Numpy版本1.13.3
这是模型:
img_width, img_height = 150, 150
batch_size = 32
samples_per_epoch = 1000
validation_steps = 300
nb_filters1 = 32
nb_filters2 = 64
conv1_size = 3
conv2_size = 2
pool_size = 2
classes_num = 3
lr = 0.0004
model = Sequential()
model.add(Conv2D(32, (3, 3), input_shape=(img_width, img_height, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(32, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten()) # this converts our 3D feature maps to 1D feature vectors
model.add(Dense(64))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(1))
model.add(Dense(classes_num, activation='softmax'))
model.compile(loss='categorical_crossentropy',
optimizer=optimizers.RMSprop(lr=lr),
metrics=['accuracy'])
这是导出代码:
from tensorflow.python import keras
estimator_model = keras.estimator.model_to_estimator(keras_model=model)
这是错误:
INFO:tensorflow:使用提供的Keras模型 . 信息:tensorflow:使用默认配置 . 警告:tensorflow:使用临时文件夹作为模型目录:/home/dsxuser/.tmp/tmpbgYQQa INFO:tensorflow:使用config:{'save_checkpoints_secs':600,' session_config':无,'_ keep_checkpoint_max':5,'_ task_type': 'worker','_ global_id_in_cluster':0,'_ is_chief':是的,'_ cluster_spec':,'_ evaluation_master':'','_ save_checkpoints_steps':无,'_ keep_checkpoint_every_n_hours':10000,'_ service':无,'_ num_ps_replicas': 0,'_ tf_random_seed':无,'_ master':'','_ num_worker_replicas':1,'_ task_id':0,'_ log_step_count_steps':100,'_ model_dir':'/ home / dsxuser / .tmp / tmpbgYQQa',' _save_summary_steps':100}来自tensorflow.python import keras的()1中的AttributeErrorTraceback(最近一次调用last)----> 2 estimator_model = keras.estimator.model_to_estimator(keras_model = model)/ opt / conda / envs / DSX-Python27 model_to_estimator中的/lib/python2.7/site-packages/tensorflow/python/keras/_impl/keras/estimator.pyc(keras_model,keras_model_path,custom_objects,model_dir,config)476 477 ker as_weights = keras_model.get_weights() - > 478 if keras_model._is_graph_network:479#TODO(yifeif):将checkpoint初始化移至scaffold.init_fn 480 _save_first_checkpoint(keras_model,AttributeError:'Sequential'对象没有属性'_is_graph_network'
有任何想法吗?
2 回答
你需要这个
from tensorflow.python.keras import Sequential
你应该使用在tensorflow中实现的keras api而不是直接使用keras api .我也有同样的问题 . 我正在导入keras如下
from tensorflow import keras from keras.models import Sequential model = Sequential()
等等它在这一行上失败了:
estimator_model = keras.estimator.model_to_estimator(keras_model=kerasModel())
错误:
我正在使用tensorflow 1.7
我通过明确指定模型的层来找到解决方案:
即通过加入keras.layers . 在上面的每一行中 . 以前我依赖进口:
正如你所看到的,我现在已经注释掉了 . 请注意,我也放了keras.models . 在Sequential()前面也可能是必要的 . 看看这是否适合你 .