Не удается получить plot.ion() в операторе if для оценки прогресса модели

#python #pandas #numpy #matplotlib

#python #pandas #numpy #matplotlib

Вопрос:

У меня проблема с построением графика в реальном времени. Я запускаю нейронную сеть с tensorflow и хочу видеть прогресс с помощью живого графика. Приведенный ниже код — это то, что у меня есть на данный момент.

Это настраивает график

 plt.ion()
fig = plt.figure()
ax1 = fig.add_subplot(111)
line1, = ax1.plot(y_test)
line2, = ax1.plot(y_test*0.5)
plt.show()
  

тогда вот как я хочу проверить прогресс

 if np.mod(i, 5) == 0:
   pred = net.run(out, feed_dict={X: X_test})
   line2.set_ydata(pred)
   plt.pause(0.01)
  

В настоящее время я получаю пустой график и не могу понять, почему. Пожалуйста, помогите.

Комментарии:

1. Что i здесь?

Ответ №1:

 plt.ion()
fig = plt.figure()
ax1 = fig.add_subplot(111)
ax1.plot(y_test)
ax1.plot(y_test*0.5)
plt.show()

# Presumably there should be a for loop here
for i in range(max_iter):
    # Code to fit the neural net, "net" to latest batch of data
    # ...

    if i % 5 == 0:
       pred = net.run(out, feed_dict={X: X_test})
       ax1.clear()
       ax1.plot(y_test)
       ax1.plot(pred)
       plt.pause(0.01)
  

Комментарии:

1. Это не решило проблему, все еще получая пустой график

2. Затем вы должны проверить, являются ли значения в y_test и pred допустимыми, и являются ли они массивами 1 dim. Я попробовал это, установив, что pred и y_test являются одномерными массивами определенного размера, генерируемыми случайным образом на каждой итерации, и это работает. Вам также может потребоваться увеличить время паузы, если вы строите много точек.

3. Спасибо за быстрый ответ, попробую сейчас