NameError:名称“ create_model”未定义..我尝试从keras导入模型,但尚未解决。如何解决?

时间:2019-06-16 15:50:12

标签: python python-3.x tensorflow machine-learning

我尝试使用张量流创建模型。当我尝试执行时,它显示this

其他文件在此链接中------ github.com/llSourcell/tensorflow_chatbot

def train():

    enc_train, dec_train=data_utils.prepare_custom_data(
        gConfig['working_directory'])
    train_set = read_data(enc_train,dec_train)

def seq2seq_f(encoder_inputs,decoder_inputs,do_decode):
    return tf.nn.seq2seq.embedding_attention_seq2seq(
        encoder_inputs,decoder_inputs, cell,
        num_encoder_symbols=source_vocab_size,
        num_decoder_symbols=target_vocab_size,
        embedding_size=size,
        output_projection=output_projection,
        feed_previous=do_decode)

with tf.Session(config=config) as sess:
    model = create_model(sess,False)

    while True:
        sess.run(model)

        checkpoint_path = os.path.join(gConfig['working_directory'],'seq2seq.ckpt')
        model.saver.save(sess, checkpoint_path, global_step=model.global_step)

除此之外,我使用的其他python文件在下面的评论部分指定的github链接中

这是在execute.py文件中定义create_model的代码


def create_model(session, forward_only):

  """Create model and initialize or load parameters"""
  model = seq2seq_model.Seq2SeqModel( gConfig['enc_vocab_size'], gConfig['dec_vocab_size'], _buckets, gConfig['layer_size'], gConfig['num_layers'], gConfig['max_gradient_norm'], gConfig['batch_size'], gConfig['learning_rate'], gConfig['learning_rate_decay_factor'], forward_only=forward_only)

  if 'pretrained_model' in gConfig:
      model.saver.restore(session,gConfig['pretrained_model'])
      return model

  ckpt = tf.train.get_checkpoint_state(gConfig['working_directory'])
  # the checkpoint filename has changed in recent versions of tensorflow
  checkpoint_suffix = ""
  if tf.__version__ > "0.12":
      checkpoint_suffix = ".index"
  if ckpt and tf.gfile.Exists(ckpt.model_checkpoint_path + checkpoint_suffix):
    print("Reading model parameters from %s" % ckpt.model_checkpoint_path)
    model.saver.restore(session, ckpt.model_checkpoint_path)
  else:
    print("Created model with fresh parameters.")
    session.run(tf.initialize_all_variables())
  return model

1 个答案:

答案 0 :(得分:0)

好的,好像您已经复制了代码,但是没有构造代码。如果在另一个文件中定义了create_model(),则必须将其导入。你做完了吗? (即from file_with_methods import create_model)。如果您希望我们提供帮助,则应考虑编辑您的文章并添加更多代码。

替代:您还可以克隆github存储库(在评论中共享),然后只需更改execution.py文件中要更改的内容。这样,您可以保留所有者使用的“层次结构”,并且可以在需要的地方添加自己的代码。