python - 如何在数组中操作数组
问题描述
我有一个X_train
形状为(1433, 1)
. 第一个维度 ( 1433
) 是用于训练的图像数量。第二个维度 ( 1
) 是一个 np.array ,它本身具有一个 shape (224, 224, 3)
。我可以通过 确认X_train[0][0].shape
。我需要适合X_train
模型:
model.fit([X_train, y_train[:,1:]], y_train[:,0], epochs=50, batch_size=32, verbose=1)
错误输出不言自明:
Traceback (most recent call last):
File "/home/combined/file_01.py", line 97, in <module>
img_output = Flatten()(x_1)
File "/usr/local/lib/python3.5/dist-packages/keras/engine/base_layer.py", line 414, in __call__
self.assert_input_compatibility(inputs)
File "/usr/local/lib/python3.5/dist-packages/keras/engine/base_layer.py", line 327, in assert_input_compatibility
str(K.ndim(x)))
ValueError: Input 0 is incompatible with layer flatten_1: expected min_ndim=3, found ndim=2
y_train[:,1:]
形状似乎没问题(1433, 9)
。
我需要做什么X_train
才能model.fit
成功输入 (1433, 224, 224, 3)?
解决方案
看来你有这样的情况:
import numpy as np
x_train = np.zeros((1433, 1), dtype=object)
for i in range(x_train.shape[0]):
x_train[i, 0] = np.random.random((224, 224, 3))
x_train.shape # (1433, 1)
x_train[0, 0].shape # (224, 224, 3)
哪里x_train
是object
数组(如嵌套列表)而不是numeric
数组。
您需要更改x_train
为纯numeric
数组:
x_train = np.array([x for x in x_train.flatten()], dtype=float)
x_train.shape # (1433, 224, 224, 3)
x_train[0].shape # (224, 224, 3)
推荐阅读
- ruby-on-rails - 升级到 ruby 3/rails 6.1 后应用程序无法访问(提供了演示应用程序)
- segmentation-fault - 相同的错误代码在 mpiexec 时重复多次
- vba - 尝试使用 VBA 在 Word 中自动进行文档拆分
- python-3.x - ValueError:应定义输入的通道维度。找到`无`
- sql - 用于计算总和的 SQL Server 查询
- zpl - 皇家邮政 CMDM 条码
- elasticsearch - elasticsearch 错误或缺失查询
- google-sheets - 返回所有 DEC YYYY 和结果的 Google 表格公式?
- javascript - 是否有可能将 async/await 与 map 一起使用,
- google-cloud-platform - 如何检查是否为 GCP 中每个密钥环中的每个密钥启用了密钥轮换?