Tensorflow:TypeError:无法序列化_io.TextIOWrapper对象

时间:2018-06-27 13:40:39

标签: python python-3.x tensorflow serialization deep-learning

我正在Tensorflow中构建简单的seq2seq程序:

x_ = [ tf.placeholder(tf.int32, shape=[None,], name='x{}'.format(i)) for i in range(xseq_len)]
y_ = [ tf.placeholder(tf.int32, shape=[None,], name='y{}'.format(i)) for i in range(yseq_len)]
decoder_inputs = [tf.zeros_like(x_[0], dtype=tf.int32, name = "GO")] + y_[:-1]
keep_prob = tf.placeholder(tf.float32)
basic_cell = tf.contrib.rnn.DropoutWrapper(tf.contrib.rnn.BasicLSTMCell(emb_dim),output_keep_prob=keep_prob)

stacked_lstm = tf.nn.rnn_cell.MultiRNNCell([basic_cell]*3)


with tf.variable_scope('decoder') as scope:
    decode_outputs, decode_states = seq2seq.embedding_rnn_seq2seq(x_,decoder_inputs, stacked_lstm,
                                        xvocab_size, yvocab_size, emb_dim)
    scope.reuse_variables()
#     # testing
    #decode_outputs_test, decode_states_test = #seq2seq.embedding_rnn_seq2seq(
        #x_, decoder_inputs, stacked_lstm, xvocab_size, #yvocab_size,emb_dim,
        #feed_previous=True)

如果我不使用最后一行,但如果我使用最后一行,则工作正常:

    decode_outputs_test, decode_states_test = seq2seq.embedding_rnn_seq2seq(
        x_, decoder_inputs, stacked_lstm, xvocab_size, yvocab_size,emb_dim,
        feed_previous=True)

如果我正在运行此单元格,则会出现此错误:

TypeError                                 Traceback (most recent call last)
<ipython-input-33-fdcec2f6b94d> in <module>()
     15     decode_outputs_test, decode_states_test = seq2seq.embedding_rnn_seq2seq(
     16         x_, decoder_inputs, stacked_lstm, xvocab_size, yvocab_size,emb_dim,
---> 17         feed_previous=True)

//anaconda/lib/python3.5/site-packages/tensorflow/contrib/legacy_seq2seq/python/ops/seq2seq.py in embedding_rnn_seq2seq(encoder_inputs, decoder_inputs, cell, num_encoder_symbols, num_decoder_symbols, embedding_size, output_projection, feed_previous, dtype, scope)
    356 
    357     # Encoder.
--> 358     encoder_cell = copy.deepcopy(cell)
    359     encoder_cell = core_rnn_cell.EmbeddingWrapper(
    360         encoder_cell,

//anaconda/lib/python3.5/copy.py in deepcopy(x, memo, _nil)
    164             copier = getattr(x, "__deepcopy__", None)
    165             if copier:
--> 166                 y = copier(memo)
    167             else:
    168                 reductor = dispatch_table.get(cls)

//anaconda/lib/python3.5/site-packages/tensorflow/python/layers/base.py in __deepcopy__(self, memo)
    653         setattr(result, k, v)
    654       else:
--> 655         setattr(result, k, copy.deepcopy(v, memo))
    656     return result
    657 

//anaconda/lib/python3.5/copy.py in deepcopy(x, memo, _nil)
    153     copier = _deepcopy_dispatch.get(cls)
    154     if copier:
--> 155         y = copier(x, memo)
    156     else:
    157         try:

//anaconda/lib/python3.5/copy.py in _deepcopy_list(x, memo)
    216     memo[id(x)] = y
    217     for a in x:
--> 218         y.append(deepcopy(a, memo))
    219     return y
    220 d[list] = _deepcopy_list

//anaconda/lib/python3.5/copy.py in deepcopy(x, memo, _nil)
    180                             raise Error(
    181                                 "un(deep)copyable object of type %s" % cls)
--> 182                 y = _reconstruct(x, rv, 1, memo)
    183 
    184     # If is its own copy, don't memoize.

//anaconda/lib/python3.5/copy.py in _reconstruct(x, info, deep, memo)
    295     if state is not None:
    296         if deep:
--> 297             state = deepcopy(state, memo)
    298         if hasattr(y, '__setstate__'):
    299             y.__setstate__(state)

//anaconda/lib/python3.5/copy.py in deepcopy(x, memo, _nil)
    153     copier = _deepcopy_dispatch.get(cls)
    154     if copier:
--> 155         y = copier(x, memo)
    156     else:
    157         try:

//anaconda/lib/python3.5/copy.py in _deepcopy_dict(x, memo)
    241     memo[id(x)] = y
    242     for key, value in x.items():
--> 243         y[deepcopy(key, memo)] = deepcopy(value, memo)
    244     return y
    245 d[dict] = _deepcopy_dict

//anaconda/lib/python3.5/copy.py in deepcopy(x, memo, _nil)
    180                             raise Error(
    181                                 "un(deep)copyable object of type %s" % cls)
--> 182                 y = _reconstruct(x, rv, 1, memo)
    183 
    184     # If is its own copy, don't memoize.

//anaconda/lib/python3.5/copy.py in _reconstruct(x, info, deep, memo)
    295     if state is not None:
    296         if deep:
--> 297             state = deepcopy(state, memo)
    298         if hasattr(y, '__setstate__'):
    299             y.__setstate__(state)

//anaconda/lib/python3.5/copy.py in deepcopy(x, memo, _nil)
    153     copier = _deepcopy_dispatch.get(cls)
    154     if copier:
--> 155         y = copier(x, memo)
    156     else:
    157         try:

//anaconda/lib/python3.5/copy.py in _deepcopy_dict(x, memo)
    241     memo[id(x)] = y
    242     for key, value in x.items():
--> 243         y[deepcopy(key, memo)] = deepcopy(value, memo)
    244     return y
    245 d[dict] = _deepcopy_dict

//anaconda/lib/python3.5/copy.py in deepcopy(x, memo, _nil)
    180                             raise Error(
    181                                 "un(deep)copyable object of type %s" % cls)
--> 182                 y = _reconstruct(x, rv, 1, memo)
    183 
    184     # If is its own copy, don't memoize.

//anaconda/lib/python3.5/copy.py in _reconstruct(x, info, deep, memo)
    295     if state is not None:
    296         if deep:
--> 297             state = deepcopy(state, memo)
    298         if hasattr(y, '__setstate__'):
    299             y.__setstate__(state)

//anaconda/lib/python3.5/copy.py in deepcopy(x, memo, _nil)
    153     copier = _deepcopy_dispatch.get(cls)
    154     if copier:
--> 155         y = copier(x, memo)
    156     else:
    157         try:

//anaconda/lib/python3.5/copy.py in _deepcopy_dict(x, memo)
    241     memo[id(x)] = y
    242     for key, value in x.items():
--> 243         y[deepcopy(key, memo)] = deepcopy(value, memo)
    244     return y
    245 d[dict] = _deepcopy_dict

//anaconda/lib/python3.5/copy.py in deepcopy(x, memo, _nil)
    153     copier = _deepcopy_dispatch.get(cls)
    154     if copier:
--> 155         y = copier(x, memo)
    156     else:
    157         try:

//anaconda/lib/python3.5/copy.py in _deepcopy_dict(x, memo)
    241     memo[id(x)] = y
    242     for key, value in x.items():
--> 243         y[deepcopy(key, memo)] = deepcopy(value, memo)
    244     return y
    245 d[dict] = _deepcopy_dict

//anaconda/lib/python3.5/copy.py in deepcopy(x, memo, _nil)
    180                             raise Error(
    181                                 "un(deep)copyable object of type %s" % cls)
--> 182                 y = _reconstruct(x, rv, 1, memo)
    183 
    184     # If is its own copy, don't memoize.

//anaconda/lib/python3.5/copy.py in _reconstruct(x, info, deep, memo)
    295     if state is not None:
    296         if deep:
--> 297             state = deepcopy(state, memo)
    298         if hasattr(y, '__setstate__'):
    299             y.__setstate__(state)

//anaconda/lib/python3.5/copy.py in deepcopy(x, memo, _nil)
    153     copier = _deepcopy_dispatch.get(cls)
    154     if copier:
--> 155         y = copier(x, memo)
    156     else:
    157         try:

//anaconda/lib/python3.5/copy.py in _deepcopy_dict(x, memo)
    241     memo[id(x)] = y
    242     for key, value in x.items():
--> 243         y[deepcopy(key, memo)] = deepcopy(value, memo)
    244     return y
    245 d[dict] = _deepcopy_dict

//anaconda/lib/python3.5/copy.py in deepcopy(x, memo, _nil)
    153     copier = _deepcopy_dispatch.get(cls)
    154     if copier:
--> 155         y = copier(x, memo)
    156     else:
    157         try:

//anaconda/lib/python3.5/copy.py in _deepcopy_list(x, memo)
    216     memo[id(x)] = y
    217     for a in x:
--> 218         y.append(deepcopy(a, memo))
    219     return y
    220 d[list] = _deepcopy_list

//anaconda/lib/python3.5/copy.py in deepcopy(x, memo, _nil)
    153     copier = _deepcopy_dispatch.get(cls)
    154     if copier:
--> 155         y = copier(x, memo)
    156     else:
    157         try:

//anaconda/lib/python3.5/copy.py in _deepcopy_tuple(x, memo)
    221 
    222 def _deepcopy_tuple(x, memo):
--> 223     y = [deepcopy(a, memo) for a in x]
    224     # We're not going to put the tuple in the memo, but it's still important we
    225     # check for it, in case the tuple contains recursive mutable structures.

//anaconda/lib/python3.5/copy.py in <listcomp>(.0)
    221 
    222 def _deepcopy_tuple(x, memo):
--> 223     y = [deepcopy(a, memo) for a in x]
    224     # We're not going to put the tuple in the memo, but it's still important we
    225     # check for it, in case the tuple contains recursive mutable structures.

//anaconda/lib/python3.5/copy.py in deepcopy(x, memo, _nil)
    153     copier = _deepcopy_dispatch.get(cls)
    154     if copier:
--> 155         y = copier(x, memo)
    156     else:
    157         try:

//anaconda/lib/python3.5/copy.py in _deepcopy_dict(x, memo)
    241     memo[id(x)] = y
    242     for key, value in x.items():
--> 243         y[deepcopy(key, memo)] = deepcopy(value, memo)
    244     return y
    245 d[dict] = _deepcopy_dict

//anaconda/lib/python3.5/copy.py in deepcopy(x, memo, _nil)
    180                             raise Error(
    181                                 "un(deep)copyable object of type %s" % cls)
--> 182                 y = _reconstruct(x, rv, 1, memo)
    183 
    184     # If is its own copy, don't memoize.

//anaconda/lib/python3.5/copy.py in _reconstruct(x, info, deep, memo)
    295     if state is not None:
    296         if deep:
--> 297             state = deepcopy(state, memo)
    298         if hasattr(y, '__setstate__'):
    299             y.__setstate__(state)

//anaconda/lib/python3.5/copy.py in deepcopy(x, memo, _nil)
    153     copier = _deepcopy_dispatch.get(cls)
    154     if copier:
--> 155         y = copier(x, memo)
    156     else:
    157         try:

//anaconda/lib/python3.5/copy.py in _deepcopy_dict(x, memo)
    241     memo[id(x)] = y
    242     for key, value in x.items():
--> 243         y[deepcopy(key, memo)] = deepcopy(value, memo)
    244     return y
    245 d[dict] = _deepcopy_dict

//anaconda/lib/python3.5/copy.py in deepcopy(x, memo, _nil)
    172                     reductor = getattr(x, "__reduce_ex__", None)
    173                     if reductor:
--> 174                         rv = reductor(4)
    175                     else:
    176                         reductor = getattr(x, "__reduce__", None)

TypeError: cannot serialize '_io.TextIOWrapper' object

我试图找到答案,我发现this的意思是,不要使用相同的名称,而且我在任何地方都没有使用相同的名称,所以我无法解决该问题?

0 个答案:

没有答案