use*_*689 5 python keras tensorflow
我正在尝试使用此博客的信息混合 TensorFlow 张量和 Keras 张量:
但当输出需要是 Keras 张量而不是 TensorFlow 张量时,问题就会出现在最后一层。有没有简单的方法可以直接转换?或者是否有 Keras 函数可以进行双线性调整大小?
finalOut = predict_flow2
finalOut = tf.image.resize_bilinear(finalOut, tf.stack([h, w]), align_corners=True)
model = Model(input=input, output=finalOut)
model.summary()
Run Code Online (Sandbox Code Playgroud)
错误消息:
类型错误:模型的输出张量必须是 Keras 张量。找到:Tensor("ResizeBilinear:0", shape=(?, 320, 1152, 2), dtype=float32)
我的意思是,我没有办法知道什么是predict_flow2。我假设它是 a Keras tensor,但如果不是,你可以概括我的答案。
模型由层组成,这些层并不完全是函数。要使用这样的 TF 函数(或任何函数),您需要将它们包裹在图层上Lambda:
import numpy as np
import tensorflow as tf
from keras import Input, Model
from keras.layers import Lambda
x = Input((224, 224, 3))
h, w = 299, 299
y = Lambda(lambda inputs: tf.image.resize_bilinear(inputs,
tf.stack([h, w]),
align_corners=True))(x)
model = Model(inputs=x, output=y)
model.summary()
p = model.predict(np.random.randn(1, 224, 224, 3))
print('shape:', p.shape)
Run Code Online (Sandbox Code Playgroud)
这将输出:
Using TensorFlow backend.
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) (None, 224, 224, 3) 0
_________________________________________________________________
lambda_1 (Lambda) (None, 299, 299, 3) 0
=================================================================
Total params: 0
Trainable params: 0
Non-trainable params: 0
_________________________________________________________________
shape: (1, 299, 299, 3)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7819 次 |
| 最近记录: |