使用相同的数据集重复训练

时间:2016-08-01 17:52:41

标签: neural-network tensorflow

我最近一直在了解TensorFlow,我试图将以下格式的网络整合在一起:


n_inputs = 16
n_hidden = 64*2
n_outputs = 3

x = tf.placeholder(tf.float32, shape=[1,n_inputs])
W = tf.Variable(tf.truncated_normal([n_inputs, n_hidden]))
b = tf.Variable(tf.zeros([n_hidden]))
hidden_layer = tf.nn.relu(tf.matmul(x, W) + b)

W2 = tf.Variable(tf.truncated_normal([n_hidden, n_outputs]))
b2 = tf.Variable(tf.zeros([n_outputs]))

logits = tf.matmul(hidden_layer, W2) + b2

我只有1784组训练数据,重复使用这些数据重复训练是否有效?我猜想如果重复太多次,它将导致过度拟合训练数据。

我目前正在接受以下培训:


print "Training"
for i in range(100):
    errs = []
    for xt, yt in zip(train[:n_dat-50], test[:n_dat-50]):
        _, err = sess.run([train_step, cost], feed_dict={x: [xt], y_: [yt]})
        errs.append(err)
    print "Error: %.5f" % np.mean(errs)

我还在考虑使用L2正规化和Dropouts来帮助改进分类。任何其他改进低水平数据培训的技巧都会非常有用。

1 个答案:

答案 0 :(得分:1)

您可以考虑添加噪音。只需在输入中添加随机内容(可能噪声具有相同的均值和方差 - 取决于)。这可以防止一些过度使用,并为您提供“更多”的训练数据(确保您将一些数据放在一边,以便您验证广义的训练成功)。

此外,有时候,可以为某些预训练创建遵循相同逻辑的人工数据集。

相关问题