batch size的设置经验:

batch_size=1的极端,每次修正方向取决于单个样本,横冲直撞难以收敛。合理范围增大batch size,提高内存利用率,跑完一次epoch所需迭代次数减少。但是不能盲目增大,因为会内存溢出,想要达到相同精度训练时间变长,batchsize增加到一定程度,其确定的下降方向已经基本不再变大。一般10-100。大小一般16 32 64 128.

关于placeholder:

在训练和测试的时候,我们想用不同的 数.所以采用占位符的方式

batch_size = tf.placeholder(tf.int32)  # 注意类型必须为 tf.int32
# 在 1.0 版本以后请使用 :
# keep_prob = tf.placeholder(tf.float32, [])
# batch_size = tf.placeholder(tf.int32, [])
_X = tf.placeholder(tf.float32, [None, 784])
y = tf.placeholder(tf.float32, [None, class_num])
keep_prob = tf.placeholder(tf.float32)

 MNIST数据input怎么输入:

input_size = 28,一行有 28 个像素

timestep_size = 28,每做一次预测,需要先输入28行

hidden_size = 256,每个隐含层的节点数

class_num = 10,最后输出分类类别数量,如果是回归预测的话应该是 1

 # 把784个点的字符信息还原成 28 * 28 的图片

_X = tf.placeholder(tf.float32, [None, 784])

# **步骤1:RNN 的输入shape = (batch_size, timestep_size, input_size)
X = tf.reshape(_X, [-1, 28, 28])

 MNIST数据定义一层 LSTM_cell 

 只需要说明 hidden_size, 它会自动匹配输入的 X 的维度

lstm_cell = rnn.BasicLSTMCell(num_units=hidden_size, forget_bias=1.0, state_is_tuple=True)

# **步骤3:添加 dropout layer, 一般只设置 output_keep_prob

02-12 14:08