Tensorflow中怎么使用queue读取数据的情况下,在同一个session中边训练边测试

在TensorFlow中使用queue读取数据时,如何在同一个session中进行训练与验证数据的交替操作是一个挑战。因为queue读取数据不使用placeholder,导致在同一session中无法简单切换数据源。常见的错误做法是创建新的graph并重新初始化变量,但这会丢失已训练的权重。解决方法是重新构建graph,包含根据条件选择训练或验证数据的分支。这样可以在不丢失权重的情况下,实现训练和验证的无缝切换。然而,这也会带来可视化summary的问题,需要对summary的处理方式进行调整。
摘要由CSDN通过智能技术生成

通常情况下,我们在训练的时候都想边训练边找来一批验证数据看看在验证数据上的性能。但是由于tensorflow中如果使用queue的方法来读取数据的话,这方法就不好实现了,主要问题是由于queue读取数据的时候,我们的graph的构建就不是使用placeholder的方法而是,那么在同一个session中就没办法换输入数据了。为了更好的描述这个问题,我先给出代码:

#使用queue方法得到的数据
train_images, train_label = get_batch_train_data(batch_size) 
valid_images, valid_label = get_batch_valid_data(batch_size)

def build_graph(x, y):
    #the first layer
    w1 = tf......
    b1 = tf.....
    h1 = tf.nn.relu(tf.matmul(x,w1)+b)...
    #the second layer
    .....
    #the xx layer
    ......
    h = tf.nn.relu(..)

    loss = .....
    accuracy = ...
    train_op = ....

    return loss, accuracy, train
  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值