tdh*_*tdh 0 python arrays numpy
我目前正在研究一个神经网络来玩石头剪刀布,但我遇到了一个巨大的问题。
我让神经网络根据三个动作的历史来预测接下来会发生什么,其中人类的每一个动作都会在一个数组中创建一个新列表,其中包含之前的两个动作和新的一个。然后神经网络对此进行训练和学习。我的代码可以在下面找到。
#add new situation, with what is currently happening to make current prediction with adjusted weights
current_turn = np.array([[input_data[len(input_data) - 1][1], input_data[len(input_data) - 1][2], output_data[len(output_data) - 1][0]]])
np.append(input_data, current_turn, axis = 0)
Run Code Online (Sandbox Code Playgroud)
我正在使用 Python 系统 NumPy,它拒绝附加这两个数组,因此神经网络无法学习。
编辑:响应之一认识到必须将数组重新分配给这个新附加的数组。当我稍后尝试这个时,如下所示,它再次不起作用。
if human_choice == "r":
output_data = np.append(output_data, ([0]))
elif human_choice == "p":
output_data = np.append(output_data, ([0.5]))
elif human_choice == "s":
output_data = np.append(output_data, ([1]))
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法来连接这些数组以便算法可以学习?
注意:“附加”没有绘制任何错误,但似乎没有完成其工作。
正如文档所说,
值将附加到该数组的副本中。
(强调我的)。
因此,np.append创建一个新列表而不是修改原始列表。你必须写:
input_data = np.append(input_data, current_turn, axis = 0)
Run Code Online (Sandbox Code Playgroud)
例子:
import numpy as np
my_array = np.array([1, 2, 3])
print(my_array)
# [1 2 3]
my_array = np.append(my_array, [4])
print(my_array)
# [1 2 3 4]
Run Code Online (Sandbox Code Playgroud)
如果有兴趣为什么会这样,另请参阅这个问题。np.append
| 归档时间: |
|
| 查看次数: |
6312 次 |
| 最近记录: |