gpt4 book ai didi

python - tensorflow 中的参数值

转载 作者:太空宇宙 更新时间:2023-11-03 15:06:41 25 4
gpt4 key购买 nike

我是 tensorflow 新手我尝试将 SVHN 数据集导入到 code that represented in this CNN tutorial该代码将 cifar10 数据集读取为二进制,我想将其替换为 SVHN 数据集作为 png 图像

我更改了图层和读取数据的步骤。此外,我在读取所有输入图像后将其大小调整为 [32,32]

批量大小 = 128

问题是,当我尝试训练它时,它在输入数据步骤中给我一个错误::

子代码如下所示:::

  label_bytes = 1  # 2 for CIFAR-100
result.height = 32
result.width = 32
result.depth = 3
image_bytes = result.height * result.width * result.depth
# Every record consists of a label followed by the image, with a
# fixed number of bytes for each.
record_bytes = label_bytes + image_bytes

# Read a record, getting filenames from the filename_queue. No
# header or footer in the CIFAR-10 format, so we leave header_bytes
# and footer_bytes at their default of 0.



reader = tf.WholeFileReader()

#for binar format (cifar daatset)
###reader = tf.FixedLengthRecordReader(record_bytes=record_bytes) ##using for binary (.bin) format
###reader = tf.TextLineReader() #this for scv formate and I used for .mat format
result.key, value = reader.read(filename_queue)


# Convert from a string to a vector of uint8 that is record_bytes long.
###record_bytes = tf.decode_raw(value, tf.uint8) ## for .bin formate
record_bytes = tf.image.decode_png(value)
result.uint8image = record_bytes
result.uint8image = tf.image.resize_images(result.uint8image, [32,32])

# The first bytes represent the label, which we convert from uint8->int32.
result.label = tf.cast(
tf.strided_slice(record_bytes, [0], [label_bytes]), tf.int32)

# The remaining bytes after the label represent the image, which we reshape
# from [depth * height * width] to [depth, height, width].

depth_major = tf.reshape(
tf.strided_slice(record_bytes, [label_bytes],
[label_bytes + image_bytes]),
[result.depth, result.height, result.width])
# Convert from [depth, height, width] to [height, width, depth].
result.uint8image = tf.transpose(depth_major, [1, 2, 0])

错误也如下所示::

File "/home/Desktop/SVHN/cifar10_input.py", line 111, in read_cifar10 [result.depth, result.height, result.width])

InvalidArgumentError (see above for traceback): Input to reshape is a tensor with 44856 values, but the requested shape has 3072

我有两个问题::

1)我想要对此错误的解释,因为我无法理解它,以及如何解决它。

2) 有没有好的教程可以解释如何选择好的 CNN 参数值

最佳答案

  1. 错误的原因是您无法将具有 44856 个值的张量 reshape 为具有 32*32*3 (=3072) 个值的张量。 reshape 是一种简单地改变张量形状而不添加或删除任何值的操作。在您的情况下, tf.strided_slice 以某种方式产生了一个大张量(具有 44856 个值),并且您无法将其重新整形为 32*32*3 张量。如果没有完整的代码和示例文件,我不明白这是如何发生的。
  2. 这个问题超出了 StackOverflow 的范围,而且可能过于笼统,无法找到合理的答案。

此外,我注意到您正在尝试从 record_bytes 的第一个字节中提取标签。这似乎是错误的,因为在您的情况下, record_bytes 是一个解码的 png,而不是在第一个字节中对图像标签进行编码的特殊 cifar 记录。

关于python - tensorflow 中的参数值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44599197/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com