首页 > 其他分享 >Tf2 ValueError: A merge layer should be called on a list of inputs

Tf2 ValueError: A merge layer should be called on a list of inputs

时间:2023-03-02 09:58:59浏览次数:53  
标签:inputs layer list should merge called

Tf2 ValueError: A merge layer should be called on a list of inputs

问题描述

最近遇到了一个tensorflow的问题,在load已经save下来的模型的时候,发生了报错:

/opt/conda/lib/python3.6/site-packages/tensorflow/python/keras/engine/base_layer.py in _infer_output_signature(self, inputs, args, kwargs, input_masks)
    878           self._maybe_build(inputs)
    879           inputs = self._maybe_cast_inputs(inputs)
--> 880           outputs = call_fn(inputs, *args, **kwargs)
    881 
    882         self._handle_activity_regularization(inputs, outputs)

/opt/conda/lib/python3.6/site-packages/tensorflow/python/keras/layers/merge.py in call(self, inputs)
    116   def call(self, inputs):
    117     if not isinstance(inputs, (list, tuple)):
--> 118       raise ValueError('A merge layer should be called on a list of inputs.')
    119     if self._reshape_required:
    120       reshaped_inputs = []

ValueError: A merge layer should be called on a list of inputs.

这个问题以前遇到过,这次又遇到的时候忘了怎么解决的,这次进行一下记录。

我先搜了下资料,如果有这个类似问题的话可以跳转至 参考 部分。

解决

tensorflow2 有两种方式进行save模型,一种是通过pb的形式进行save,这种方式可以保持模型结构的name以及相应的结构。

比如以下方式:

 train_model.save('{}/ckpt'.format(output_path))

另外一种是通过json config的形式进行save模型,这里只会保存模型的结构,所以使用这种模型save的checkpoint需要结构一致。

  train_model.save_weights('{}/ckpt'.format(output_path), save_format='tf')

对代码进行排查发现,模型预期应该使用pb的checkpoint进行restore,但是由于部分公共代码改动导致使用了json config的checkpoint进行restore,导致出现这个问题。

参考

python - tf.keras.models.load_model return ValueError: A merge layer should be called on a list of inputs - Stack Overflow

python 3.x - ValueError: A merge layer should be called on a list of inputs. Tensorflow Keras - Stack Overflow

python - Keras ValueError: A merge layer should be called on a list of inputs - Stack Overflow

python - tf.keras.models.load_model return ValueError: A merge layer should be called on a list of inputs - Stack Overflow

标签:inputs,layer,list,should,merge,called
From: https://www.cnblogs.com/nomornings/p/17170751.html

相关文章

  • java中listmap根据map某一字段排序公共方法
    /***List<Map>根据map字段排序**@paramlist*@paramfeild排序字段*@paramsortTyp排序方式desc-倒序asc-正序*@return......
  • Potplayer 关闭切换视频时自动调整窗口大小
    当安装Potplayer播放器用于播放本地视频时,默认的设置是在切换视频时客户端会根据视频的分辨率自动切换显示界面的大小,这样的操作有好有坏,具体看个人喜好。对于不喜欢自......
  • java LinkedList 源码
    概述底层数据结构是双向链表(jdk1.6是双向循环,1.7开始不循环了),所以新增/删除效率高,查询/修改效率相对较低全能冠军:既是一个顺序容器,也是队列,还可以作为栈使用未实现Ran......
  • 监听异常:The listener supports no services
    数据库版本:单机环境19c实例是正常的[oracle@sit19cadmin]$sqlplus/assysdbaSQL*Plus:Release19.0.0.0.0-ProductiononWedMar116:39:162023Version19......
  • InputStreamReader介绍&使用
    InputStreamReader类:java.io.InputStreamReaderextendsReaderInputStreamReader:是字节流通向字符流的桥梁:他使用指定的charset读取字节并将其解码为字符。(解码:把看不懂......
  • inputStream和outputStream互相转换
    inputStream转换成outputStreampackageorg.example.base.controller;importlombok.AllArgsConstructor;importorg.springframework.web.bind.annotation.GetMapping;imp......
  • HashSet 与 List 性能
    很明显,通用HashSet<T>类的搜索性能高于通用类List<T>。只需将基于散列的密钥与类中的线性方法进行比较即可List<T>。然而,计算哈希键本身可能需要一些CPU周期,因此对......
  • java List 源码
    概述底层通过数组实现,所以查询/更新效率很高,删除/增加跟位置相关,除未实现同步外和Vector大致相同扩容publicbooleanadd(Ee){//数组扩容,不是一定要扩容,需要......
  • 【InputStream】Java中InputStream和String之间的转换方法
    【转载】https://blog.csdn.net/lmy86263/article/details/60479350在Java中InputStream和String之间的转化十分普遍,本文主要是总结一下转换的各种方法,包括JDK原生提供的,......
  • 推荐系统[四]:精排-详解排序算法LTR (Learning to Rank)_ poitwise, pairwise, listwis
    0.前言召回排序流程策略算法简介推荐可分为以下四个流程,分别是召回、粗排、精排以及重排:召回是源头,在某种意义上决定着整个推荐的天花板;粗排是初筛,一般不会上复杂模型......