python - Keras 和错误 : Setting an array element with a sequence

标签 python tensorflow machine-learning keras deep-learning

我的神经网络中有多个数据源的输入问题。我的数据框是:

                           0  1  2                   3   4  
0        [True, True, False]  3 -1  [False, True, True]  1

输入与前 4 列相关,输出与最后一列相关。 当我训练我的神经网络时,我得到 Setting an array element with a sequence.

def network():
        model = Sequential()
        model.add(Dense(output_dim=50, activation='relu', input_dim=4))
        model.add(Dense(output_dim=50, activation='relu'))
        model.add(Dense(output_dim=50, activation='relu'))
        model.add(Dense(output_dim=1, activation='softmax'))
        opt = RMSprop(lr=0.00025)
        model.compile(loss='mse', optimizer=opt)
        return model

    data = pd.DataFrame()
    state = [0]*3
    for i in range(3):
        state[i]= random.choice([True, False])
    move = random.randint(1,4)
    reward = random.choice([-1, -10, 10])
    future_state = [0]*3
    for i in range(3):
        future_state[i] = random.choice([True, False])
    Q = 1
    array = [state, move, reward, future_state, Q]

    data = data.append([array])
    training = data.drop([4], axis = 1)
    target = data[4]
    model = network()
    model.fit(training,target,epochs=2)

Python 回溯:

Traceback (most recent call last):
  File "D:/Documents/PycharmProjects/SnakeGA/try.py", line 33, in <module>
    model.fit(training,target,epochs=2)
  File "D:\Anaconda3\lib\site-packages\keras\models.py", line 845, in fit
    initial_epoch=initial_epoch)
  File "D:\Anaconda3\lib\site-packages\keras\engine\training.py", line 1485, in fit
    initial_epoch=initial_epoch)
  File "D:\Anaconda3\lib\site-packages\keras\engine\training.py", line 1140, in _fit_loop
    outs = f(ins_batch)
  File "D:\Anaconda3\lib\site-packages\keras\backend\tensorflow_backend.py", line 2075, in __call__
    feed_dict=feed_dict)
  File "D:\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 900, in run
    run_metadata_ptr)
  File "D:\Anaconda3\lib\site-packages\tensorflow\python\client\session.py", line 1104, in _run
    np_val = np.asarray(subfeed_val, dtype=subfeed_dtype)
  File "D:\Anaconda3\lib\site-packages\numpy\core\numeric.py", line 492, in asarray
    return array(a, dtype, copy=False, order=order)
ValueError: setting an array element with a sequence.

这是因为我在某些列中有数组,而在其他列中有整数吗?我以为 Keras 可以处理这个问题,但也许我错了。我不清楚如何处理来自多个来源的串联数据。 谢谢!

最佳答案

numpy 数组中的列表在插入前需要展平。

array[[False, False, True], 4, -10, [False, True, False], 1]在 OP 实现中,

并应展平为 [False, False, True, 4, -10, False, True, False, 1] .

Here是一个工作的 jupyter notebook 演示了这一点。

关于python - Keras 和错误 : Setting an array element with a sequence,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51469446/

相关文章:

python - 斐波那契函数列表

tensorflow - Tensorflow 中的深度复制

machine-learning - 在回归模型中使用 Keras ImageDataGenerator

python - 你应该总是使用正则化 tensorflow 吗?

python - Mac 10.8.2 上的 Numpy 安装

python - Bokeh 未从 GeoJson 正确渲染多边形(岛屿)

python - 何时或为什么在 Python 中使用相对导入

tensorflow - 家庭监控,TensorFlow(+ OpenCV)

python - TensorFlow MNIST 示例未使用 fully_connected_feed.py 运行

Ray Worker 调用时 Tensorflow 无法检测到 GPU