为了账号安全,请及时绑定邮箱和手机立即绑定

在Tensorflow中进行图像处理的黑色输出(使用jpeg解码器进行神经网络训练)

在Tensorflow中进行图像处理的黑色输出(使用jpeg解码器进行神经网络训练)

慕码人8056858 2021-04-08 14:15:47
我可以访问大量以TFRecords二进制格式存储的2048x2048x3 jpeg图片。后来,我使用存储的文件来训练深度神经网络。为了存储图片,我目前使用两种不同的方法。第一个使用张量流。我定义了一个创建Tensorflow图的函数。我一直在为所有图片重复使用相同的图形:def picture_decoder(height, width):    g = tf.Graph()    with g.as_default():        picture_name_tensor = tf.placeholder(tf.string)        picture_contents = tf.read_file(picture_name_tensor)        picture = tf.image.decode_jpeg(picture_contents)        picture_as_float = tf.image.convert_image_dtype(picture, tf.float32)        picture_4d = tf.expand_dims(picture_as_float, 0)        resize_shape = tf.stack([height, width])        resize_shape_as_int = tf.cast(resize_shape, dtype=tf.int32)        final_tensor =  tf.image.resize_bilinear(picture_4d, resize_shape_as_int)    return g, picture_name_tensor, final_tensorHeight, Width = 300, 300graph, nameholder, image_tensor = picture_decoder(Height, Width)                                        with tf.Session(graph=graph) as sess:    init = tf.group( tf.global_variables_initializer(), tf.local_variables_initializer() )    sess.run(init)    #Loop through the  pictures    for(...picture_name...):        picture = sess.run(image_tensor, feed_dict={nameholder: picture_name} )    第二种方法使用numpy:def picture_decoder_numpy(picture_name, height, width):    image = Image.open(picture_name)    image = image.resize((height,width), Image.LANCZOS)    image = np.array(image, dtype=np.int32)                                 return np.expand_dims(image, axis=0)Heigth, Width = 300, 300for(...picture_name...):    picture = picture_decoder_numpy(pict, Height, Width)第一种方法似乎比第二种方法快约6倍。我面临的问题与以后的培训有关。对于第一种情况,我定义的深度神经网络无法学习,即,其损失在许多时期内都没有改善,并且仅比1小一点。使用第二种方法,在不更改任何神经网络参数的情况下,损失达到了E-05值。我是否缺少一些Tensorflow细节?如有必要,我可以发布完整的代码。
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 277 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信