我可以用二维数组的numpy数组来填充深度学习模型吗?

2024-04-23 07:26:37 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试将深度学习应用于某一类型的数据(我澄清我在深度学习领域是全新的)。你知道吗

我的问题是我的数据有这样的形状:

array([[list([0.2711662547481215, 0.8077617617949696]),
    list([0.2740944703391002, 0.8077307987902311]),
    list([0.27975517109824677, 0.8105948767285374]), ...,
    list([0.2682358275139472, 0.7961672223420195]),
    list([0.26828227202105487, 0.7963242490089074]),
    list([0.26825241483791423, 0.7962280425298988])],
   [list([0.19316381088239035, 0.5278528814946285]),
    list([0.18176279020905559, 0.5279490879736373]),
    list([0.17593953367503223, 0.5337004661038035]), ...,
    list([0.1874776762264944, 0.3347222452601722]),
    list([0.19028093397692153, 0.3317276803733254]),
    list([0.19318371567115078, 0.3260205351070712])],
   [list([0.29431331243330516, 0.5278639397106065]),
    list([0.2971652263340356, 0.5279137016825076]),
    list([0.3028425144171491, 0.5250098141666806]), ...,
    list([0.3087608716085834, 0.5393921298676885]),
    list([0.3086790408103461, 0.5392881826374951]),
    list([0.3087752472893548, 0.5393158281774402])],
   ...,
   [list([0.1701350761081715, 0.45287817716367823]),
    list([0.17019589629605056, 0.4500627553756753]),
    list([0.17029763188304833, 0.450014099225372]), ...,
    list([0.1700244939483913, 0.4067189720282427]),
    list([0.16734729986011357, 0.4067134429202537]),
    list([0.17002670559158692, 0.40671233709865584])],
   [list([0.23650759422982293, 0.9316270506079255]),
    list([0.23931638108823905, 0.9231288116288199]),
    list([0.23652307573219214, 0.9231332349152112]), ...,
    list([0.25673417707521246, 0.908707792171889]),
    list([0.23367116183146175, 0.8682977535234241]),
    list([0.239428069069617, 0.8567585051503641])],
   [list([0.0, 0.0]), list([0.0, 0.0]), list([0.0, 0.0]), ...,
    list([0.3085728819369571, 0.8452137276693151]),
    list([0.3085463422186099, 0.851007127020198]),
    list([0.3085363898242297, 0.8481662713354454])]], dtype=object)

这是因为每个元素代表一个点,每个点有两个坐标x和y

我就是这样建立我的模型的:

model = models.Sequential()

model.add(layers.Dense(512, activation='relu'))
model.add(layers.Dense(1024, activation='relu'))
model.add(layers.Dense(1024, activation='relu'))
model.add(layers.Dense(1024, activation='relu'))
model.add(layers.Dense(1, activation='softmax'))

model.compile(optimizer='rmsprop', loss='sparse_categorical_crossentropy', metrics=['acc'])

但一旦我开始训练阶段

model.fit(x_train, y_train, epochs=10, batch_size=128)

我得到这个错误:

Epoch 1/10
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-27-3b52916d7a95> in <module>
----> 1 model.fit(x_train, y_train, epochs=10, batch_size=128)

~/.local/lib/python3.6/site-packages/keras/engine/training.py in fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)
   1237                                         steps_per_epoch=steps_per_epoch,
   1238                                         validation_steps=validation_steps,
-> 1239                                         validation_freq=validation_freq)
   1240 
   1241     def evaluate(self,

~/.local/lib/python3.6/site-packages/keras/engine/training_arrays.py in fit_loop(model, fit_function, fit_inputs, out_labels, batch_size, epochs, verbose, callbacks, val_function, val_inputs, shuffle, initial_epoch, steps_per_epoch, validation_steps, validation_freq)
    194                     ins_batch[i] = ins_batch[i].toarray()
    195 
--> 196                 outs = fit_function(ins_batch)
    197                 outs = to_list(outs)
    198                 for l, o in zip(out_labels, outs):

~/.local/lib/python3.6/site-packages/tensorflow/python/keras/backend.py in __call__(self, inputs)
   3275         tensor_type = dtypes_module.as_dtype(tensor.dtype)
   3276         array_vals.append(np.asarray(value,
-> 3277                                      dtype=tensor_type.as_numpy_dtype))
   3278 
   3279     if self.feed_dict:

~/.local/lib/python3.6/site-packages/numpy/core/_asarray.py in asarray(a, dtype, order)
     83 
     84     """
---> 85     return array(a, dtype, copy=False, order=order)
     86 
     87 

ValueError: setting an array element with a sequence.

我想这个错误是由于我的数据格式,但我不知道如何解决它。你知道吗


Tags: inaddsizemodellayersbatchstepsarray
1条回答
网友
1楼 · 发布于 2024-04-23 07:26:37

错误可以在错误消息中看到,您需要调整一个数组(2d),给它一个列表数组,在调用fit之前尝试x_train = np.array(x_train)y_train = np.array(y_train)。这应该可以解决这个问题,但我相信你会得到更多的错误

还要尝试展平数组,当前数组有列表列表,如果每个列表的大小不同,则无法将其转换为数组,在这种情况下,请先展平,然后转换。你知道吗

另外,我假设每个示例x是一个大小为2的数组,它表示一个点(x,y坐标对),而不是一个坐标数组

相关问题 更多 >