我有一个来自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)
如何解决这个问题?
答案 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]
对我有用。