Keras和Tensorflow渴望执行

时间:2018-08-15 07:08:10

标签: tensorflow keras

我有一个来自https://github.com/bonlime/keras-deeplab-v3-plus的模型,我尝试对其进行自定义。

我想在Tensorflow Eager模式下运行它

const strings = [
  '.some test.',
  '.',
  '..',
  '.some.',
  'some'
];
strings.forEach((str) => {
  if (str.length > 2 && str[0] === '.' && str[str.length - 1] === '.') {
    console.log("Matched: " + str);
  }
});

但这会导致错误:

  

model.py”,第236行,位于_inverted_res_block中       in_channels =输入。_keras_shape[-1] AttributeError:“ DeferredTensor”对象没有属性“ _keras_shape”

关于代码的这一部分

from model import Deeplabv3
import tensorflow as tf
tf.enable_eager_execution()

model = Deeplabv3(weights='pascal_voc', input_shape=(200,200,3), backbone='mobilenetv2', classes=64)
batch = tf.zeros((1,200,200,3))
f = model(batch)

如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

P-gn指出:

  • tf.keras(包含在TensorFlow中)支持预先执行,而keras模块则不支持。
  • tf.keras实现了keras API规范,因此它应该可以替代使用keras的任何程序(例如,将对keras.Model的引用更改为{{ 1}})。此外,它还支持在TensorFlow中进行急切的执行。

答案 1 :(得分:0)

我进行了更改:

代替此行: in_channels = inputs.shape [-1] .value 或另一行:输入。_keras_shape[-1]

我还使用了其他方法: in_channels = input.shape.as_list()[-1]

对我有用。