【发布时间】:2020-08-12 21:59:46
【问题描述】:
我在形状为 (2000, 20, 28) 的 X 矩阵上运行 conv1D,批量大小为 2000、20 个时间步长和 28 个特征。 我想继续使用 conv2D CNN 并将我的矩阵的维数增加到 (2000, 20, 28, 10) 有 10 个元素,我可以为这些元素构建一个 (2000, 20, 28) X 矩阵。同样,我想获得一个大小为 (2000, 10) 的 y 数组,即我用于 LSTM 和 Conv1D 网络的大小为 (2000, ) 的 y 数组的 5 倍。
我用来从输入 dataX、dataY 创建 20 个时间步的代码是
def LSTM_create_dataset(dataX, dataY, seq_length, step):
Xs, ys = [], []
for i in range(0, len(dataX) - seq_length, step):
v = dataX.iloc[i:(i + seq_length)].values
Xs.append(v)
ys.append(dataY.iloc[i + seq_length])
return np.array(Xs), np.array(ys)
我在准备创建 conv2D NN 数据的循环中使用此函数:
for ric in rics:
dataX, dataY = get_model_data(dbInput, dbList, ric, horiz, drop_rows, triggerUp1, triggerLoss, triggerUp2 = 0)
dataX = get_model_cleanXset(dataX, trigger) # Clean X matrix for insufficient data
Xs, ys = LSTM_create_dataset(dataX, dataY, seq_length, step) # slide over seq_length for a 3D matrix
Xconv.append(Xs)
yconv.append(ys)
Xconv.append(Xs)
yconv.append(ys)
我得到一个 (10, 2000, 20, 28) Xconv 矩阵而不是 (2000, 20, 28, 10) 目标输出矩阵 X 和一个 (10, 2000) 矩阵 y 而不是目标 (2000, 10) )。
我知道我可以使用yconv = np.reshape(yconv, (2000, 5)) 轻松重塑 yconv。但是 Xconv Xconv = np.reshape(Xconv, (2000, 20, 28, 10)) 的重塑功能似乎很危险,因为我无法将输出可视化,甚至是错误的。
我怎样才能安全地做到这一点(或者你能确认我的第一次尝试吗?
提前非常感谢。
【问题讨论】:
标签: python numpy tensorflow reshape