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