我目前正在研究神经网络来播放Rock-Paper-Scissors,但我遇到了一个巨大的问题。
我正在让神经网络根据三个动作的历史来预测接下来会发生什么,其中每个动作都由人类进行,在包含前两个动作的数组中创建一个新列表新的。然后神经网络训练并学习这一点。我的代码可以在下面找到。
#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)
我正在使用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]))
有没有更好的方法来加入这些数组,以便算法可以学习?
注意:“追加”并未绘制任何错误,但似乎无法正常工作。
答案 0 :(得分:3)
正如https://github.com/edenhill/librdkafka所说,
将值附加到此数组的副本。
(强调我的)。
因此np.append
会创建一个新列表,而不是修改原始列表。你必须写:
input_data = np.append(input_data, current_turn, axis = 0)
示例:
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]
另请参阅docs是否有兴趣np.append
以这种方式行事。
答案 1 :(得分:0)
您可以使用numpy.concatenate方法。
<div [hidden]="edit">
<ul>
<li><b>Category: </b>{{item.category}}</li>
<li><b>Name: </b>{{item.name}}</li>
</ul>
<button class="btn btn-default" (click)="edit=true">Edit</button>
</div>
<div [hidden]="!edit">
<form (ngSubmit)="onSubmit()" [ng-form-model]="form">
<div class="form-group">
<label class="bold">Category: </label>
<input ng-control="category">
</div>
<div class="form-group">
<label class="bold">Name: </label>
<input ng-control="name">
</div>
<button type="submit">Submit</button>
</form>
</div>
private item:Item = new Item("food","apple");
form = new ControlGroup({
categorie: new Control(this.item.category),
naam: new Control(this.item.name)
});
edit = false;
onSubmit() {
this.edit = false;
alert("saved");
}
请参阅文档以获取更多帮助:http://docs.scipy.org/doc/numpy-1.10.0/reference/generated/numpy.concatenate.html