keras.layers.TimeDistributed与hub.KerasLayer NotImplementedError

时间:2019-05-16 17:45:23

标签: tensorflow keras tf.keras

我想将tf.keras.TimeDistributed()层与最新TensorFLow V2版本(tf-nightly-gpu-2.0-preview)中的tf.hub inception_v3 CNN模型一起使用。输出如下所示。似乎tf.keras.TimeDistributed()并未完全实现与tf.hub模型一起使用。不知何故,无法计算输入层的形状。我的问题:是否有解决此问题的方法?

与常规tf.keras.layer一起使用

tf.keras.TimeDistributed可以正常工作。我只想将CNN模型应用于每个时间步骤。

型号

const queryObj = {
  "user": {
    "first_name": "Srini",
    "last_name": "Raman",
     "gender": "male",
     "dob": "1992-08-02",
     "address_attributes": {
      "city": "San Diego",
      "state": "CA",
      "zip": 92127,
      "country": "USA",
      "latitude": 37.257009,
      "longitude": -120.050767
    }
  }
};


// Destructure into address_attributes and rest of the properties
const { address_attributes, ...rest } = queryObj.user;

// Pass rest of the properties for making the initial query parameters
const queryParamsObj = new URLSearchParams(rest);

// Use Object.entries to set the remaining query parameters
Object.entries(address_attributes).forEach(x => {
 queryParamsObj.set(x[0], x[1]);
});

// Use the .toString() function to get a stringified representation of it.
console.log(queryParamsObj.toString());

preview / inception_v3 / feature_vector / 3“

import tensorflow as tf
import tensorflow_hub as hub 
from tensorflow.keras import layers, Model

model_url = "https://tfhub.dev/google/tf2- 

预期输出

tf.keras模型

错误消息

文件“ /usr/local/lib/python3.5/dist-packages/tensorflow/python/keras/engine/base_layer.py”,第489行,在compute_output_shape中     引发NotImplementedError NotImplementedError

2 个答案:

答案 0 :(得分:0)

TimeDistributed之类的包装层需要传递layer实例。如果您是在自定义图层之外构建模型,则至少需要将它们包装在tf.keras.layers.Lambda中。对于hub.KerasLayer中的模型,这可能是不可能的,因此您可以考虑此处发布的解决方案:

TimeDistributed of a KerasLayer in Tensorflow 2.0

答案 1 :(得分:0)

在Tensorflow 2中,可以将自定义层与TimeDistributed层结合使用。抛出错误是因为它无法计算输出形状(请参见here)。

因此,在您的情况下,您应该能够继承KerasLayer并手动实现compute_output_shape