1 回答
TA贡献1772条经验 获得超5个赞
罪魁祸首似乎是RNN细胞中固定的时间维度。
xph = tf.placeholder(tf.float32, [None, periods, appetizer])
yph = tf.placeholder(tf.float32, [None, periods, exit_neurons])
cell = tf.contrib.rnn.BasicRNNCell(num_units = hidden_neurons, activation = tf.nn.relu)
在这里,在 xph 和 yph 中,您都已将时间维度指定为周期。因此,如果您有更长或更短的信号,则会出现错误。
我无法推断模型层的确切尺寸,因为您没有指定输入形状或模型摘要。因此,使用占位符数字。
有两种可能的修复方法。
不要使用固定的时间维度 = 周期,而应使用 None。
xph = tf.placeholder(tf.float32, [None, None, appetizer])
yph = tf.placeholder(tf.float32, [None, None, exit_neurons])
但是,缺点是每个批次中必须具有相同长度的信号,或者您可以简单地使用批量大小 = 1 进行训练,而不必担心时间长度。
使用截断/填充来解决长度问题。只需将信号传递到预处理函数即可添加/删除额外的时间点。
import numpy as np
def pre_process(x, fixed_len = 1000): # x.shape -> (100, 1000, 1)
if x.shape[1] >= fixed_len:
return x[:,:fixed_len,:]
else:
z_ph = np.zeros((x.shape[0], fixed_len, x.shape[2]))
z_ph[:,:x.shape[1],:] = x
return z_ph
X_batches = pre_process(X_batches, YOU_CHOOSE_THIS_LENGTH) # based on the length of your data
X_test = pre_process(X_test, YOU_CHOOSE_THIS_LENGTH)
添加回答
举报
