tfdeploy icon indicating copy to clipboard operation
tfdeploy copied to clipboard

Error when creating model `unknown operation: TensorArrayGatherV3`

Open rasmusbergpalm opened this issue 8 years ago • 1 comments

Hey.

I'm trying to convert a keras model into a tfdeploy model. Below is the code

import tensorflow as tf
import tfdeploy as td
from keras.models import load_model

td.setup(tf)
sess = tf.Session()
K.set_session(sess)

keras_model = load_model('../model.07-0.02.hdf5')

model = td.Model()
model.add(keras_model.output, sess)  #error occurs here
model.save("td-model.pkl")

But I get the error:

tfdeploy.UnknownOperationException: unknown operation: TensorArrayGatherV3

Full stacktrace below. Any ideas?

I'm using keras v. 2.0.2, tensorflow 1.0.1 and tfdeploy 0.4.2

Traceback (most recent call last):
  File "/Users/rbp/dev/normalization/tfdeploy/load.py", line 33, in <module>
    model.add(keras_model.output, sess)  # y and all its ops and related tensors are added recursively
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 153, in add
    tensor = Tensor(tensor, tf_sess, **kwargs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 194, in __call__
    inst = super(TensorRegister, cls).__call__(tf_tensor, *args, **kwargs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 249, in __init__
    self.op = Operation.new(tf_tensor.op, tf_sess, tf_feed_dict=tf_feed_dict)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 424, in new
    return cls.classes[tf_op.type](tf_op, *args, **kwargs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 322, in __call__
    inst = super(OperationRegister, cls).__call__(tf_op, *args, **kwargs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 396, in __init__
    self.inputs = tuple(Tensor(tf_tensor, *args, **kwargs) for tf_tensor in tf_op.inputs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 396, in <genexpr>
    self.inputs = tuple(Tensor(tf_tensor, *args, **kwargs) for tf_tensor in tf_op.inputs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 194, in __call__
    inst = super(TensorRegister, cls).__call__(tf_tensor, *args, **kwargs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 249, in __init__
    self.op = Operation.new(tf_tensor.op, tf_sess, tf_feed_dict=tf_feed_dict)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 424, in new
    return cls.classes[tf_op.type](tf_op, *args, **kwargs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 322, in __call__
    inst = super(OperationRegister, cls).__call__(tf_op, *args, **kwargs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 396, in __init__
    self.inputs = tuple(Tensor(tf_tensor, *args, **kwargs) for tf_tensor in tf_op.inputs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 396, in <genexpr>
    self.inputs = tuple(Tensor(tf_tensor, *args, **kwargs) for tf_tensor in tf_op.inputs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 194, in __call__
    inst = super(TensorRegister, cls).__call__(tf_tensor, *args, **kwargs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 249, in __init__
    self.op = Operation.new(tf_tensor.op, tf_sess, tf_feed_dict=tf_feed_dict)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 424, in new
    return cls.classes[tf_op.type](tf_op, *args, **kwargs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 322, in __call__
    inst = super(OperationRegister, cls).__call__(tf_op, *args, **kwargs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 396, in __init__
    self.inputs = tuple(Tensor(tf_tensor, *args, **kwargs) for tf_tensor in tf_op.inputs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 396, in <genexpr>
    self.inputs = tuple(Tensor(tf_tensor, *args, **kwargs) for tf_tensor in tf_op.inputs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 194, in __call__
    inst = super(TensorRegister, cls).__call__(tf_tensor, *args, **kwargs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 249, in __init__
    self.op = Operation.new(tf_tensor.op, tf_sess, tf_feed_dict=tf_feed_dict)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 424, in new
    return cls.classes[tf_op.type](tf_op, *args, **kwargs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 322, in __call__
    inst = super(OperationRegister, cls).__call__(tf_op, *args, **kwargs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 396, in __init__
    self.inputs = tuple(Tensor(tf_tensor, *args, **kwargs) for tf_tensor in tf_op.inputs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 396, in <genexpr>
    self.inputs = tuple(Tensor(tf_tensor, *args, **kwargs) for tf_tensor in tf_op.inputs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 194, in __call__
    inst = super(TensorRegister, cls).__call__(tf_tensor, *args, **kwargs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 249, in __init__
    self.op = Operation.new(tf_tensor.op, tf_sess, tf_feed_dict=tf_feed_dict)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 424, in new
    return cls.classes[tf_op.type](tf_op, *args, **kwargs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 322, in __call__
    inst = super(OperationRegister, cls).__call__(tf_op, *args, **kwargs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 396, in __init__
    self.inputs = tuple(Tensor(tf_tensor, *args, **kwargs) for tf_tensor in tf_op.inputs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 396, in <genexpr>
    self.inputs = tuple(Tensor(tf_tensor, *args, **kwargs) for tf_tensor in tf_op.inputs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 194, in __call__
    inst = super(TensorRegister, cls).__call__(tf_tensor, *args, **kwargs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 249, in __init__
    self.op = Operation.new(tf_tensor.op, tf_sess, tf_feed_dict=tf_feed_dict)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 424, in new
    return cls.classes[tf_op.type](tf_op, *args, **kwargs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 322, in __call__
    inst = super(OperationRegister, cls).__call__(tf_op, *args, **kwargs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 396, in __init__
    self.inputs = tuple(Tensor(tf_tensor, *args, **kwargs) for tf_tensor in tf_op.inputs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 396, in <genexpr>
    self.inputs = tuple(Tensor(tf_tensor, *args, **kwargs) for tf_tensor in tf_op.inputs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 194, in __call__
    inst = super(TensorRegister, cls).__call__(tf_tensor, *args, **kwargs)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 249, in __init__
    self.op = Operation.new(tf_tensor.op, tf_sess, tf_feed_dict=tf_feed_dict)
  File "/Users/rbp/anaconda/envs/python3/lib/python3.5/site-packages/tfdeploy.py", line 422, in new
    raise UnknownOperationException("unknown operation: %s" % tf_op.type)
tfdeploy.UnknownOperationException: unknown operation: TensorArrayGatherV3

rasmusbergpalm avatar Apr 21 '17 09:04 rasmusbergpalm

Looks tike the tf.gather op is not implemented yet, but this should be easy to implement. I'll give it a try over the weekend.

riga avatar Apr 21 '17 15:04 riga