2017-11-20 14 views
0

私はpythonスクリプトを持っていますが、その行の1つに別のクラスに存在する関数が呼び出されています。これは既にスクリプトをインポートして関数にアクセスしましたが、クラスそのもののインスタンスである引数をとります。私は次のコードクラスインスタンスを引数として渡す

import skimage.io as io 
import numpy as np 
import collections 
import os 
import tensorflow as tf 
import common_flags 
import model 

from tensorflow.python.platform import flags 

FLAGS = flags.FLAGS 
common_flags.define() 

images_placeholder = tf.placeholder(tf.float32, shape=[635, 1219]) 
fn ='/home/ubuntu/tensorflow/6m.jpg' 
images = [io.imread(fn, dtype='float')] 
print(images) 
images_actual_data = np.stack(images) 
images_actual_data = 2.5*(images_actual_data - 0.5) # normalize values 



dataset = common_flags.create_dataset(split_name=FLAGS.split_name) 
modelout = common_flags.create_model(dataset.num_char_classes, 
            dataset.max_sequence_length, 
            dataset.num_of_views, dataset.null_code) 
endpoints = model.Model.create_base(images_placeholder, labels_one_hot=None) 

with tf.Session() as sess: 
    init_fn = model.create_init_fn_to_restore('/nsfs/tensor_models/models/research/attention_ocr/python/inception_v3.ckpt', '') 
    init_fn(sess) 
    sess.run(tf.global_variables_initializer()) 
    predictions = sess.run(endpoints.predicted_chars, feed_dict={images_placeholder:images_actual_data.reshape(1,imHeight,imWidth,imChannel)}) 
    print predictions 

を実行すると、私はそう

class Model(object):  
    def create_base(self, 
     images, 
     labels_one_hot, 
     scope='AttentionOcr_v1', 
     reuse=None): 

機能は、スクリプトmodel.pyにあり、その中ModelModelと呼ばれるクラスは、関数である、model.py内部の機能次のエラーが表示されます。

INFO 2017-11-20 15:08:46.000545: fsns.py: 130 Using FSNS dataset split_name=train dataset_dir=/nsfs/tensor_models/models/research/attention_ocr/python/datasets/data/fsns 
Traceback (most recent call last): 
    File "run_tf.py", line 31, in <module> 
    endpoints = model.Model.create_base(images_placeholder, labels_one_hot=None) 
TypeError: unbound method create_base() must be called with Model instance as first argument (got Tensor instance instead) 

助けることができる任意のアイデア? おかげ

+2

常法(ないstaticmethodsまたはクラスメソッド)を働いたクラスの特定のインスタンスに呼び出された場合にのみ意味があり、クラス自体ではありません。おそらく 'model.Model()。create_base(...)'が必要です。あるいは、前の行の 'create_model()'がこのモデルのインスタンスを返したかもしれません。この場合、 'modelout.create_base()'を使うことができます。あるいは、本当にインスタンスを参照する必要がない場合は、静的メソッドであったはずです。 – jasonharper

+0

それでは、Model()のオブジェクトをインスタンス化し、その上でcreate_baseを呼び出すのを止めていますか? – BoboDarph

+0

@ jasonharper 'modelout.create_base()'が実際に働いた、ありがとう – ibr

答えて

0

それはコメントに助言されたように、私は

endpoints = modelout.create_base(images_placeholder, labels_one_hot=None) 

を使用し、それが

関連する問題