1 回答

TA貢獻1772條經(jīng)驗 獲得超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 中,您都已將時間維度指定為周期。因此,如果您有更長或更短的信號,則會出現(xiàn)錯誤。
我無法推斷模型層的確切尺寸,因為您沒有指定輸入形狀或模型摘要。因此,使用占位符數(shù)字。
有兩種可能的修復方法。
不要使用固定的時間維度 = 周期,而應使用 None。
xph = tf.placeholder(tf.float32, [None, None, appetizer])
yph = tf.placeholder(tf.float32, [None, None, exit_neurons])
但是,缺點是每個批次中必須具有相同長度的信號,或者您可以簡單地使用批量大小 = 1 進行訓練,而不必擔心時間長度。
使用截斷/填充來解決長度問題。只需將信號傳遞到預處理函數(shù)即可添加/刪除額外的時間點。
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)
添加回答
舉報