c中的readNetFromTensorflow中的错误

weixin_38087646 2019-09-12 01:22:49
我是深度学习的新手.在第一步中,我使用keras在python中创建和训练模型,并通过此代码冻结: def export_model(MODEL_NAME, input_node_name, output_node_name): tf.train.write_graph(K.get_session().graph_def, 'out', \ MODEL_NAME + '_graph.pbtxt') tf.train.Saver().save(K.get_session(), 'out/' + MODEL_NAME + '.chkp') freeze_graph.freeze_graph('out/' + MODEL_NAME + '_graph.pbtxt', None, \ False, 'out/' + MODEL_NAME + '.chkp', output_node_name, \ "save/restore_all", "save/Const:0", \ 'out/frozen_' + MODEL_NAME + '.pb', True, "") input_graph_def = tf.GraphDef() with tf.gfile.Open('out/frozen_' + MODEL_NAME + '.pb', "rb") as f: input_graph_def.ParseFromString(f.read()) output_graph_def = optimize_for_inference_lib.optimize_for_inference( input_graph_def, [input_node_name], [output_node_name], tf.float32.as_datatype_enum) with tf.gfile.FastGFile('out/opt_' + MODEL_NAME + '.pb', "wb") as f: f.write(output_graph_def.SerializeToString()) 它的输出: >检查站> Model.chkp.data-00000-of-00001> Model.chkp.index> Model.chkp.meta> Model_graph.pbtxt> frozen_Model.pb> opt_Model.pb 当我想通过readNetFromTensorflow在opencv c中读取网络时: String weights = "frozen_Model.pb"; String pbtxt = "Model_graph.pbtxt"; dnn::Net cvNet = cv::dnn::readNetFromTensorflow(weights, pbtxt); 这会产生错误: OpenCV(4.0.0-pre) Error: Unspecified error (FAILED: ReadProtoFromBinaryFile(param_file, param). Failed to parse GraphDef file: frozen_Model.pb) in cv::dnn::ReadTFNetParamsFromBinaryFileOrDie, file D:\LIBS\OpenCV-4.00\modules\dnn\src\tensorflow\tf_io.cpp, line 44 和 OpenCV(4.0.0-pre) Error: Assertion failed (const_layers.insert(std::make_pair(name, li)).second) in cv::dnn::experimental_dnn_v4::`anonymous-namespace’::addConstNodes, file D:\LIBS\OpenCV-4.00\modules\dnn\src\tensorflow\tf_importer.cpp, line 555 如何解决这个错误?
...全文
724 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
weixin_38098251 2019-09-12
  • 打赏
  • 举报
回复
部分代码:创建模型,train和export_model train_batch = gen.flow_from_directory(path + 'Train', target_size = (Width, Height), shuffle = False, color_mode = color_mode, batch_size = batch_size_train, class_mode = 'categorical') . . X_train, Y_train = next(train_batch) . . X_train = X_train.reshape(X_train.shape).astype('float32') . . model = Sequential(name = MODEL_NAME) model.add(Conv2D(filters = 128, kernel_size = (5, 5), activation = 'relu',name = 'FirstLayerConv2D_No1',input_shape = (Width, Height, image_channel))) model.add(Conv2D(filters = 128, kernel_size = (3, 3), activation = 'relu')) model.add(MaxPool2D(pool_size = (2, 2))) model.add(BatchNormalization()) . . . model.add(Dropout(0.25)) model.add(Flatten()) model.add(Dense(200, activation = 'tanh')) model.add(BatchNormalization()) model.add(Dropout(0.25)) model.add(Dense(100, activation = 'softmax', name = 'endNode')) model.compile(loss = 'categorical_crossentropy', optimizer = SGD(lr = 0.01, momentum = 0.9), metrics = ['accuracy']) history = model.fit(X_train, Y_train, batch_size = batch_size_fit, epochs = epoch, shuffle = True, verbose = 1, validation_split = .1, validation_data = (X_test, Y_test)) export_model(MODEL_NAME, "FirstLayerConv2D_No1/Relu", "endNode/Softmax")

433

社区成员

发帖
与我相关
我的任务
社区描述
其他技术讨论专区
其他 技术论坛(原bbs)
社区管理员
  • 其他技术讨论专区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧