Keras与tensorflow
我有一个模型,我试图定制一点 我想用Tensorflow模式运行它Keras与tensorflow,tensorflow,keras,Tensorflow,Keras,我有一个模型,我试图定制一点 我想用Tensorflow模式运行它 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
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)
但是,这会产生错误:
模型.py“,第236行,在_倒置的_res_块中
in_channels=inputs._keras_shape[-1]AttributeError:'DeferredTensor'对象没有属性'_keras_shape'
这是关于代码的这一部分
def _inverted_res_block(inputs, expansion, stride, alpha, filters, block_id, skip_connection, rate=1):
in_channels = inputs._keras_shape[-1]
#in_channels = inputs.get_shape()[-1].value
#in_channels = tf.shape(inputs)[-1]
import pdb;pdb.set_trace()
pointwise_conv_filters = int(filters * alpha)
pointwise_filters = _make_divisible(pointwise_conv_filters, 8)
x = inputs
prefix = 'expanded_conv_{}_'.format(block_id)
if block_id:
# Expand
x = Conv2D(expansion * in_channels, kernel_size=1, padding='same',
use_bias=False, activation=None,
name=prefix + 'expand')(x)
如何解决这个问题?正如所指出的:
(包含在TensorFlow中)支持即时执行,而tf.keras
模块不支持keras
实现了tf.keras
API规范,因此它应该是使用keras
的任何程序的替代品(例如,将对keras
的引用更改为keras.Model
)。此外,它还支持TensorFlow中的即时执行tf.keras.Model
- 我做了以下更改:
改为此行:in_channels=inputs.shape[-1]。value
或另一行:输入
我在_channels=inputs.shape.as_list()[-1]中使用了另一个:
它对我很有用。虽然eager execution与
tf.keras
兼容(并推荐使用),但我认为这不会扩展到keras
模块。