나는 matplotlib를 사용하여 다양한 수의 노드와 숨겨진 레이어로 신경 네트워크를 실행 한 결과를 플롯하려고하는데, 가장 좋은 방법은 this type of graph을 복제하는 것이고, 그래서 내가 보여줄 수 :PolyCollection 3D 그래프가있는 빈 플롯
- 정확도 (Z 축) 뉴런의 다른 번호 (y 축)을 통해
- 숨겨진 층 (x 축)의 수는 이러한 추세에 미치는 영향
전에 링크 된 데모에서 코드를 수정하여 불행히도, 성취하려고 시도했다. 그리고 불행하게도, 나는 단지 얻는다. an empty graph. 나는 개인적으로 matplotlib의 문서가 매우 부족하다는 것을 알았고, 튜토리얼은 그것이 어떻게 작동했는지에 대한 설명을 가지고 있지 않았다. 전에 그것으로 3D 음모.
다음 차원 플롯 구축에 관심을 내 코드의 일부입니다
verts = []
for i in range(len(z_axis_values)):
ys = [0] + y_axis_values + [0]
verts.append(list(zip(x_axis_values, ys)))
# Create a 3D plot
fig: Axes3D = plt.figure().add_subplot(111, projection='3d')
poly = PolyCollection(verts=verts, facecolors=[cc(color_options[i]) for i in range(len(x_axis_values))])
poly.set_alpha(0.7)
# Build the image
fig.add_collection3d(poly, zs=z_axis_values, zdir='y')
fig.set_xlabel(x_label)
fig.set_xlim3d(min(x_axis_values), max(x_axis_values))
fig.set_ylabel(z_label)
fig.set_ylim3d(min(y_axis_values), max(y_axis_values))
fig.set_zlabel("Accuracy")
fig.set_zlim3d(min(z_axis_values), 100)
fig.set_label("Accuracy over {} and {} in {}".format(x_label, z_label, data_set))
plt.savefig("plot_{}_{}_{}.png".format(data_set, x_label.replace(' ', ''), z_label.replace(' ', '')),
bbox_inches='tight')
plt.show()
를 그리고이 작동하지 않는 이유를 이해하는 데 도움이된다면, 나는 세부 데이터가 예에서 사용 된 것입니다 I 그것을 테스트 봤는데 :
>>> x_axis_values # Number of neurons
[2, 10, 20, 50, 100]
>>> y_axis_values # Number of hidden layers
[2, 3, 5]
>>> z_axis_values # Accuracies of all the runs of the neural net, testing each possible number of hidden layers on each possible number of neurons
[94.73684210526315, 92.10526315789474, 94.73684210526315, 94.73684210526315, 94.73684210526315, 92.10526315789474, 94.73684210526315, 94.73684210526315, 57.89473684210527, 92.10526315789474, 92.10526315789474, 57.89473684210527, 94.73684210526315, 94.73684210526315, 94.73684210526315]
을 나는이 문제를 알아 내려고 노력에 도움이 될 수있는 정보를 누락하는 경우 알려 주시기 바랍니다.
'fig : Axes3D = plt.figure(). add_subplot (111, projection = '3d')'줄을 어디에서 찾을 수 있었습니까? 이것은 매우 이상한 문법입니다. 여러분이'fig'라고 부르는'Axes3D' 객체를 만들고 있는데, 이것은 혼란스러워 보입니다. –
@Diziet 강력하게 타이핑하는 변수를위한 표준 파이썬 3 구문입니다. 나는 그것을하기 위해 나의 린터가 나를 비명 지르기를 멈추게하려고했다. 이름'무화과'에 관해서는, 그것은 단지 나쁜 변수 이름 lmao입니다. – AdumbCopper
@Diziet 귀하의 답변에 감사드립니다. 그것은 매우 상세하고 이해하기 쉽습니다. 너 멋지다! – AdumbCopper