机器学习/深度学习入门:项目中的问题

1.错误如下:

ValueError: Tensor("Reshape_7:0", shape=(1, 6), dtype=int32) must be from the same graph as Tensor("word_embedding_matrix:0", shape=(26320, 50), dtype=float32_ref).
'''简写为'''
ValueError: Tensor A must be from the same graph as Tensor B

(1)按照网上的解决办法,添加以下代码:

tf.reset_default_graph()

(2)如果上述方案不好使,去掉(1)中代码,添加一下代码:

with tf.Graph().as_default():

(3)如果上述方案还是不好使,则需要观察在哪里报错,该错误附近即产生了两个graph导致的。如:

tr_data = ImageDataGenerator(train_file,
                             mode='training',
                             batch_size=batch_size,
                             num_classes=num_classes,
                             shuffle=True)
iterator = tf.data.Iterator.from_structure(tr_data.data.output_types, tr_data.data.output_shapes)
next_batch = iterator.get_next()
training_init_op = iterator.make_initializer(tr_data.data)
train_batches_per_epoch = int(np.floor(tr_data.data_size / batch_size))

在使用tf.data.Iterator读取数据时,就会产生以上错误,所以我将读取数据的方式更改为tfrecord。

2.错误如下:

tensorflow.python.framework.errors_impl.OutOfRangeError: RandomShuffleQueue '_1_shuffle_batch/random_shuffle_queue' is closed and has insufficient elements (requested N, current size M)
 [[Node: shuffle_batch = QueueDequeueMany[_class["loc:@shuffle_batch/random_shuffle_queue"], component_types=[DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_FLOAT, DT_STRING], timeout_ms=-1, _device="/job:localhost/replica:0/task:0/cpu:0"](shuffle_batch/random_shuffle_queue, shuffle_batch/n)]]

(requested N, current size M)中N指的是batch_size的大小,M指的是已经读取的数据大小,当M=0时,说明数据根本没有读取成功,通常采用解决方案(1)~(3),当M\neq0时,通常采用解决方案(4)

一般遇到这个错误,代码本身没有问题,基本上都是各种参数不一致导致的。

解决方案如下:

(1)确保训练过程中包含以下代码:

sess.run(tf.group(tf.global_variables_initializer(), tf.local_variables_initializer()))

(2)在转换为tfrecord数据前后图像的大小和通道数保持一致。(通常会忽略这一步)

(3)tf.decode_raw(features['image_raw'],tf.uint8) 解码时,数据类型是tf.uint8而不是tf.float32。

(4)在读取tfrecord数据时,注意以下代码:

files = tf.train.match_filenames_once([self.FILE_DIR])
filename_queue = tf.train.string_input_producer(files, shuffle=True, num_epochs=num_epochs)

当num_epoches=1时,也会报以上错误,但具体原因还不了解,下面是网友的解释:

持续更新中……

猜你喜欢

转载自blog.csdn.net/M_Z_G_Y/article/details/82983316