tao*_*oat 5 python numpy machine-learning
我正在从 numpy 数组列表中创建几个 numpy 数组,如下所示:
seq_length = 1500
seq_diff = 200 # difference between start of two sequences
# x and y are 2D numpy arrays
x_seqs = [x[i:i+seq_length,:] for i in range(0, seq_diff*(len(x) // seq_diff), seq_diff)]
y_seqs = [y[i:i+seq_length,:] for i in range(0, seq_diff*(len(y) // seq_diff), seq_diff)]
boundary1 = int(0.7 * len(x_seqs)) # 70% is training set
boundary2 = int(0.85 * len(x_seqs)) # 15% validation, 15% test
x_train = np.array(x_seqs[:boundary1])
y_train = np.array(y_seqs[:boundary1])
x_valid = np.array(x_seqs[boundary1:boundary2])
y_valid = np.array(y_seqs[boundary1:boundary2])
x_test = np.array(x_seqs[boundary2:])
y_test = np.array(y_seqs[boundary2:])
Run Code Online (Sandbox Code Playgroud)
我想最终得到 6 个形状为 (n, 1500, 300) 的数组,其中 n 分别是训练、验证和测试数组数据的 70%、15% 或 15%。
这就是出错的地方:_trainand_valid数组结果很好,但_test数组是一维数组数组。那是:
x_train.shape 是 (459, 1500, 300)x_valid.shape 是 (99, 1500, 300)x_test.shape 是 (99,)但是打印x_test验证它包含正确的元素——即它是一个 99 元素长的数组(1500, 300)数组。
为什么_test矩阵会得到错误的形状,而_train和_valid矩阵却不会?
项目的x_seqs长度各不相同。当它们的长度都相同时,np.array可以用它们制作一个 3d 数组;当它们不同时,它会生成一个列表的对象数组。看看dtype的x_test. 看着那(这[len(i) for i in x_test]。
我拿了你的代码,补充道:
x=np.zeros((2000,10))
y=x.copy()
...
print([len(i) for i in x_seqs])
print(x_train.shape)
print(x_valid.shape)
print(x_test.shape)
Run Code Online (Sandbox Code Playgroud)
并得到:
1520:~/mypy$ python3 stack40643639.py
[1500, 1500, 1500, 1400, 1200, 1000, 800, 600, 400, 200]
(7,)
(1, 600, 10)
(2,)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3645 次 |
| 最近记录: |