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
にあり、その中Model
内Model
と呼ばれるクラスは、関数である、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)
助けることができる任意のアイデア? おかげ
常法(ないstaticmethodsまたはクラスメソッド)を働いたクラスの特定のインスタンスに呼び出された場合にのみ意味があり、クラス自体ではありません。おそらく 'model.Model()。create_base(...)'が必要です。あるいは、前の行の 'create_model()'がこのモデルのインスタンスを返したかもしれません。この場合、 'modelout.create_base()'を使うことができます。あるいは、本当にインスタンスを参照する必要がない場合は、静的メソッドであったはずです。 – jasonharper
それでは、Model()のオブジェクトをインスタンス化し、その上でcreate_baseを呼び出すのを止めていますか? – BoboDarph
@ jasonharper 'modelout.create_base()'が実際に働いた、ありがとう – ibr