我最近一直在了解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来帮助改进分类。任何其他改进低水平数据培训的技巧都会非常有用。
答案 0 :(得分:1)
您可以考虑添加噪音。只需在输入中添加随机内容(可能噪声具有相同的均值和方差 - 取决于)。这可以防止一些过度使用,并为您提供“更多”的训练数据(确保您将一些数据放在一边,以便您验证广义的训练成功)。
此外,有时候,可以为某些预训练创建遵循相同逻辑的人工数据集。