Python TensorFlow tf.data processing dev在每个历元后设置 batch\u size=2 x_dim=2 m=5 m_dev=4 时代=2 #玩具数据 X_序列=np.random.randn(m,X_dim) Y_train=np.random.randint(0,5,size=m)。重塑(-1,1) X_dev=np.random.randn(m_dev,X_dim) Y_dev=np.random.randint(0,5,size=m_dev)。重塑(-1,1) X=tf.placeholder(X_train.dtype,shape=[None,X_dim],name='X') Y=tf.placeholder(Y_train.dtype,shape=[None,1],name='Y') #创建两个独立的数据集 train_dataset=tf.data.dataset.from_tensor_切片((X,Y)).batch(批次大小) dev_dataset=tf.data.dataset.from_tensor_切片((X,Y)).batch(X_dev.shape[0]) #创建泛型迭代器 迭代器=tf.data.iterator.from_结构(train_dataset.output_类型, 列车(数据集。输出(图形) #创建两个初始化操作 train_init_op=迭代器。生成初始值设定项(train_数据集) dev_init_op=iterator.make_初始值设定项(dev_数据集) next\u data=iterator.get\u next() 使用tf.Session()作为sess: 对于范围内的历元(历元): #训练数据 sess.run(train_init_op,feed_dict={X:X_train,Y:Y_train}) 尽管如此: 尝试: X_批次,Y_批次=sess.run(下一个数据) #过程训练数据 除了tf.errors.OutOfRangeError: 打破 #Epoch done:处理dev数据 run(dev_init_op,feed_dict={X:X_dev,Y:Y_dev}) X_dev_all,Y_dev_all=sess.run(下一个数据)

Python TensorFlow tf.data processing dev在每个历元后设置 batch\u size=2 x_dim=2 m=5 m_dev=4 时代=2 #玩具数据 X_序列=np.random.randn(m,X_dim) Y_train=np.random.randint(0,5,size=m)。重塑(-1,1) X_dev=np.random.randn(m_dev,X_dim) Y_dev=np.random.randint(0,5,size=m_dev)。重塑(-1,1) X=tf.placeholder(X_train.dtype,shape=[None,X_dim],name='X') Y=tf.placeholder(Y_train.dtype,shape=[None,1],name='Y') #创建两个独立的数据集 train_dataset=tf.data.dataset.from_tensor_切片((X,Y)).batch(批次大小) dev_dataset=tf.data.dataset.from_tensor_切片((X,Y)).batch(X_dev.shape[0]) #创建泛型迭代器 迭代器=tf.data.iterator.from_结构(train_dataset.output_类型, 列车(数据集。输出(图形) #创建两个初始化操作 train_init_op=迭代器。生成初始值设定项(train_数据集) dev_init_op=iterator.make_初始值设定项(dev_数据集) next\u data=iterator.get\u next() 使用tf.Session()作为sess: 对于范围内的历元(历元): #训练数据 sess.run(train_init_op,feed_dict={X:X_train,Y:Y_train}) 尽管如此: 尝试: X_批次,Y_批次=sess.run(下一个数据) #过程训练数据 除了tf.errors.OutOfRangeError: 打破 #Epoch done:处理dev数据 run(dev_init_op,feed_dict={X:X_dev,Y:Y_dev}) X_dev_all,Y_dev_all=sess.run(下一个数据),python,tensorflow,machine-learning,tensorflow-datasets,Python,Tensorflow,Machine Learning,Tensorflow Datasets,我正在使用带有可重新初始化迭代器的tf.data来处理训练和开发集数据。对于每个历元,我初始化训练数据集。具有相似的结构。我认为这是没有效率的,特别是如果训练集很大的话 我在网上找到的一些资源在for循环之前有sess.run(train\u init\u op,feed\u dict={X:X\u train,Y:Y\u train})。但是我们不能在每个历元之后处理dev集;我们只能在遍历epochsepochs之后才能处理它 是否有一种方法可以在每个历元之后有效地处理开发集?在每个历元的训

我正在使用带有可重新初始化迭代器的
tf.data
来处理训练和开发集数据。对于每个历元,我初始化训练数据集。具有相似的结构。我认为这是没有效率的,特别是如果训练集很大的话

我在网上找到的一些资源在for循环之前有
sess.run(train\u init\u op,feed\u dict={X:X\u train,Y:Y\u train})
。但是我们不能在每个历元之后处理dev集;我们只能在遍历
epochs
epochs之后才能处理它


是否有一种方法可以在每个历元之后有效地处理开发集?

在每个历元的训练之后,您希望对训练集的一部分运行一些操作。为了做到这一点,不清楚在哪里重新初始化数据集。这就是您试图解决的问题吗?在每个历元的训练数据之后,我想计算dev set上的损失和精度,为此我必须在dev set上运行初始化。之后,我必须为下一个历元重新初始化训练数据。我正在寻找一种有效的方法来处理在每个历元后重新初始化训练数据的需要。要准确地做到这一点,您走上了正确的轨道:再次初始化您的数据集并运行,直到再次跳出范围错误。然而,我们经常在计算训练操作的同时计算损失和精度,通过一次输入多个操作
loss,acc,u=sess.run([loss,acc,train\u step],{})
-这样,它将免费提供,而在每次训练后,您希望在训练集的一部分上运行某些操作,它只会稍微不精确。为了做到这一点,不清楚在哪里重新初始化数据集。这就是您试图解决的问题吗?在每个历元的训练数据之后,我想计算dev set上的损失和精度,为此我必须在dev set上运行初始化。之后,我必须为下一个历元重新初始化训练数据。我正在寻找一种有效的方法来处理在每个历元后重新初始化训练数据的需要。要准确地做到这一点,您走上了正确的轨道:再次初始化您的数据集并运行,直到再次跳出范围错误。然而,我们经常通过一次输入多个操作来计算损失和精度,方法是一次输入多个操作
loss,acc,u=sess.run([loss,acc,train\u step],{})
-这样一来,它将不会产生任何成本,而只会稍微不精确