[我正在尝试将归一化像素数据矩阵从mnist转换为一热阵列矩阵,该矩阵表示基于类&的每个像素的y_val,如果它大于0。
这是输入示例,更具体地说是数据集中单个示例中的单个行:
[[0. ]
[0. ]
[0. ]
[0. ]
[0. ]
[0. ]
[0. ]
[0. ]
[0. ]
[0. ]
[0. ]
[0. ]
[0.01176471]
[0.07058824]
[0.07058824]
[0.07058824]
[0.49411765]
[0.53333336]
[0.6862745 ]
[0.10196079]
[0.6509804 ]
[1. ]
[0.96862745]
[0.49803922]
[0. ]
[0. ]
[0. ]
[0. ]]
像素亮度值的28个元素的数组。现在,假设此输入的真实类为数字“ 2”。该脚本将检查并在当前每个像素值所在的位置插入一个单热点数组。
如果像素== 0,则将其转换为
[0. ]
到
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 1.]
因为我正在使用第11个条目来表示空白像素。
如果数组的元素值大于0,则将插入示例true标签的单热点数组,即“ 2”。
[0. 0. 1. 0. 0. 0. 0. 0. 0. 0. 0. 0.]
这是我到目前为止的代码
#copying the shape of the train data matrix of arrays into a new
#array
new_y_train = np.copy(x_train)
for ex_index, example in enumerate(x_train):
for row_index, row in enumerate(example):
for px_index, pixel in enumerate(row):
temp_arr = np.zeros(11)
if pixel > 0:
pixel = np.insert(temp_arr, np.argmax(y_train[index]), 1)
new_y_train[ex_index][row_index][px_index] = pixel
else:
pixel = np.insert(temp_arr, 11, 1)
new_y_train[ex_index][row_index][px_index] = pixel
但是,当我到达此行时
new_y_train[ex_index][row_index][px_index] = pixel
关于将数组广播到像素值时出现错误,“无法将输入数组从形状(12)广播到形状(1)”
不知道如何调整大小或修改数组,以允许将此新的单发数组输入矩阵。
任何帮助都会很棒!
您可以使用花式索引来做