我从零开始编写一个简单的神经网络。神经网络采用simple_1_layer_classification_NN
方法实现。对于每个Epoch (神经网络的训练运行),正如您从for loop
中看到的(在下面的代码中),我将成本(误差裕度)值附加到数组costs
中。问题是,当训练可以达到数千甚至数百万的时候。这意味着costs
数组可以附加这么多cost
元素。
由于我不想在一个图上绘制数千个或数百万个数据点,我想要做的是,无论costs
数组中有多少元素,我只想从其中绘制100个数据点,尽可能均匀地展开。如果有10个元素,那就把所有10个元素都画出来。如果有100个元素,则绘制所有100个元素。任何高于100的,只绘制100个等距的数据点。用200个地块绘制每一个其他数据点。用500,每5元素画一幅图。即使是102个元素,也只能绘制100个数据点,尽可能的间隔.我希望这是合理的。这有可能做到吗?注意,我只包含了与问题最相关的部分代码。在有点点# ......
注释的地方,我只是表示这里有代码,但我没有包括它,因为它与问题无关。
事先非常感谢您的帮助。
def simple_1_layer_classification_NN(self, dataset_input_matrix, output_data_labels, input_dimension, epochs, activation_func='sigmoid', learning_rate=0.2, cost_func='squared_error'):
# ...............
cost = float()
costs = []
# ................
# We perform the training based on the number of epochs specified
for i in range(epochs):
#....................
# Cost: the cost function to calculate the prediction error margin
cost = chosen_cost_func(pred, output_data_labels[ri])
costs.append(cost)
#.....................
plt.plot(costs)
plt.show()
发布于 2019-04-16 01:01:55
关于
x = xdata[::10]
x = ydata[::10]
plt.plot(x, y)
plt.show()
它将画出xdata,ydata中的每10点。
在你的情况下
x = None
y = None
l = len(xdata)
if l < 100:
x = xdata[::]
y = ydata[::]
elif l < 200:
x = xdata[::2]
y = ydata[::2]
elif l < 500:
x = xdata[::5]
y = ydata[::5]
更新
不确定它是否相关,但您也可以尝试使用自定义大步。它将指向相同的数据缓冲区,但使用不同的元数据来跨出数据。
函数要查看的是步幅,它在stride_tricks中是有原因的--您将有一些时间来适应它。将可写设置为False,这样就不会破坏原始数据。简单的例子是这里。
https://stackoverflow.com/questions/55699132
复制相似问题