Python构建对象实例:object()不接受任何参数
我正在编写一个tensorflow程序,类似于他们的MNIST LSTM示例代码。我正在构建数据文件,但无法构建对象实例 基本上,这个过程是这样的:定义一个临时实例Python构建对象实例:object()不接受任何参数,python,class,object,constructor,arguments,Python,Class,Object,Constructor,Arguments,我正在编写一个tensorflow程序,类似于他们的MNIST LSTM示例代码。我正在构建数据文件,但无法构建对象实例 基本上,这个过程是这样的:定义一个临时实例data\u sets=DataSet(),然后构建对象data\u sets.train=DataSet(arg1,arg2…和data\u sets.test=DataSet(arg1,arg2…等等 当我试图构建data\u sets.train=DataSet(arg1,arg2…)时,我得到了错误(底部的确切错误) MNIS
data\u sets=DataSet()
,然后构建对象data\u sets.train=DataSet(arg1,arg2…
和data\u sets.test=DataSet(arg1,arg2…
等等
当我试图构建data\u sets.train=DataSet(arg1,arg2…)时,我得到了错误(底部的确切错误)
MNIST代码如下所示:
class DataSet(object):
def __init__(self, images, labels, fake_data=False, one_hot=False,
dtype=tf.float32):
"""Construct a DataSet.
one_hot arg is used only if fake_data is true. `dtype` can be either
`uint8` to leave the input as `[0, 255]`, or `float32` to rescale into
`[0, 1]`.
"""
dtype = tf.as_dtype(dtype).base_dtype
#pdb.set_trace()
if dtype not in (tf.uint8, tf.float32):
raise TypeError('Invalid image dtype %r, expected uint8 or float32' %
dtype)
if fake_data:
self._num_examples = 10000
self.one_hot = one_hot
else:
pdb.set_trace()
assert images.shape[0] == labels.shape[0], (
'images.shape: %s labels.shape: %s' % (images.shape,
labels.shape))
self._num_examples = images.shape[0]
# Convert shape from [num examples, rows, columns, depth]
# to [num examples, rows*columns] (assuming depth == 1)
assert images.shape[3] == 1
images = images.reshape(images.shape[0],
images.shape[1] * images.shape[2])
if dtype == tf.float32:
# Convert from [0, 255] -> [0.0, 1.0].
images = images.astype(numpy.float32)
images = numpy.multiply(images, 1.0 / 255.0)
self._images = images
self._labels = labels
self._epochs_completed = 0
self._index_in_epoch = 0
@property
def images(self):
return self._images
@property
def labels(self):
return self._labels
@property
def num_examples(self):
return self._num_examples
@property
def epochs_completed(self):
return self._epochs_completed
因此,在同一个文件中,它们有一个函数,该函数定义了一个没有参数的实例(在通过之后),构建数据集(我省略了该部分),然后使用data\u set.train、data\u set.validation和data\u set.test构建对象data\u set
——每次它们再次调用类构造函数时,但这一次,它们包含了论点。如下图所示
def read_data_sets(train_dir, fake_data=False, one_hot=False, dtype=tf.float32):
class DataSets(object):
pass
pdb.set_trace()
data_sets = DataSets()
...(build dataset)...
data_sets.train = DataSet(train_images, train_labels, dtype=dtype)
data_sets.validation = DataSet(validation_images, validation_labels,
dtype=dtype)
data_sets.test = DataSet(test_images, test_labels, dtype=dtype)
pdb.set_trace()
return data_sets
我基本上构建了完全相同的东西,但使用了不同的数据集
这是我的类定义(忽略标签,复制粘贴混乱的标识——我认为缩进不是问题)
然后我用以下方法构建对象:
def read_data(data_dir):
dtype=tf.float32
VALIDATION_SIZE = 1
TEST_SIZE = 1
class ScrollData(object):
pass
data_sets = ScrollData()
...(build dataset)...
data_sets.train = ScrollData(train_images, train_labels, dtype=tf.float32)
data_sets.validation = ScrollData(validation_images, validation_labels, dtype=tf.float32)
data_sets.test = ScrollData(testtest_images, test_labels, dtype=tf.float32)
return data_sets
我得到以下错误:
data_sets.train = ScrollData(train_images, train_labels, dtype=tf.float32)
TypeError: object() takes no parameters
您可以用一个不带构造函数参数的类覆盖read_data
函数中的ScrollData
省去这个重新定义,或者在第一次调用中添加参数,或者在构造函数中定义标准值
去掉这个重新定义,或者在第一个调用中添加参数,或者在构造函数中定义标准值为什么在read_data
中重新定义ScrollData
?@user2357112老实说,不知道,我一开始没有这样做,然后我得到了data_set=ScrollData()的参数号错误
——取3,但只取1。然后,我再次检查了MNIST代码,它们将重新定义包含在pass
语句中。这个错误随后被解决了为什么在read_data
中重新定义ScrollData
?@user2357112老实说不知道,我一开始没有,然后我得到了data_set=ScrollData()
的参数号错误——取3,但只给出1。然后,我再次检查了MNIST代码,它们将重新定义包含在pass
语句中。然后,该错误被解决了。一开始我没有解决,然后我得到了一个空初始化的参数编号错误data\u set=ScrollData()
——取3,但只给出1。然后我再次检查MNIST代码,它们将重新定义包含在pass语句中。这个错误被解决了,你需要选择你想做的事情。你想省略参数吗?@DanielRoseman我想初始化一个空对象,然后用参数填充它。就像MNIST示例代码一样。你能看到我们的逻辑有什么不同吗?@KendallWeihe:MNIST代码使用数据集
和数据集
。您使用了相同的名称两次。@user2357112doh!就这样,谢谢你!如此小的细节我一开始没有,然后我得到了一个空初始化的参数编号错误data\u set=ScrollData()
——取3,但只给出1。然后我再次检查MNIST代码,它们将重新定义包含在pass语句中。这个错误被解决了,你需要选择你想做的事情。你想省略参数吗?@DanielRoseman我想初始化一个空对象,然后用参数填充它。就像MNIST示例代码一样。你能看到我们的逻辑有什么不同吗?@KendallWeihe:MNIST代码使用数据集
和数据集
。您使用了相同的名称两次。@user2357112doh!就这样,谢谢你!这么小的细节
data_sets.train = ScrollData(train_images, train_labels, dtype=tf.float32)
TypeError: object() takes no parameters