代码之家  ›  专栏  ›  技术社区  ›  NOCi

如何将Tensorflow的结果记录到CSV文件

  •  0
  • NOCi  · 技术社区  · 2 年前

    我有一个在tensorflow上运行的CNN模型,希望将精度、损失、f1、精度和召回值保存为,我还有绘图和混淆矩阵(你能将这些绘图保存到csv吗?)我想省钱。 如何将每个模型运行时的数据保存到csv或文本文件中?

    0 回复  |  直到 2 年前
        1
  •  1
  •   AloneTogether    2 年前

    尝试使用 tf.keras.callbacks.CSVLogger :

    import tensorflow as tf
    import pandas as pd
    
    model = tf.keras.Sequential()
    model.add(tf.keras.layers.Dense(1, input_dim=40))
    model.add(tf.keras.layers.Dense(1, 'sigmoid'))
    
    adam_opt = tf.keras.optimizers.Adam(0.1)
    model.compile(loss='bce', optimizer=adam_opt, metrics=[tf.keras.metrics.BinaryAccuracy(name="binary_accuracy", dtype=None), 
                                                           tf.keras.metrics.Recall()])
    
    train_x = tf.random.normal((50, 40))
    train_y = tf.random.uniform((50, 1), maxval=2, dtype=tf.int32)
    val_x = tf.random.normal((50, 40))
    val_y = tf.random.uniform((50, 1), maxval=2, dtype=tf.int32)
    
    csv_logger = tf.keras.callbacks.CSVLogger('metrics.csv')
    history = model.fit(train_x, train_y, epochs=5, validation_data=(val_x, val_y), callbacks=[csv_logger])
    
    df = pd.read_csv('/content/metrics.csv')
    print(df.to_markdown())
    
    Epoch 1/5
    2/2 [==============================] - 2s 563ms/step - loss: 0.7918 - binary_accuracy: 0.4400 - recall: 0.4583 - val_loss: 0.7283 - val_binary_accuracy: 0.4200 - val_recall: 0.4815
    Epoch 2/5
    2/2 [==============================] - 0s 62ms/step - loss: 0.6793 - binary_accuracy: 0.5400 - recall: 0.5417 - val_loss: 0.7093 - val_binary_accuracy: 0.4200 - val_recall: 0.2593
    Epoch 3/5
    2/2 [==============================] - 0s 92ms/step - loss: 0.6647 - binary_accuracy: 0.6200 - recall: 0.3750 - val_loss: 0.7138 - val_binary_accuracy: 0.4400 - val_recall: 0.2222
    Epoch 4/5
    2/2 [==============================] - 0s 68ms/step - loss: 0.6369 - binary_accuracy: 0.6200 - recall: 0.3750 - val_loss: 0.7340 - val_binary_accuracy: 0.4400 - val_recall: 0.3704
    Epoch 5/5
    2/2 [==============================] - 0s 69ms/step - loss: 0.5869 - binary_accuracy: 0.6800 - recall: 0.5417 - val_loss: 0.7975 - val_binary_accuracy: 0.4800 - val_recall: 0.4444
    
    纪元 二进制\u精度 丧失 回忆起 val\u binary\u精度 val\u损失 val\u召回
    0 0 0.44 0.791773 0.458333 0.42 0.728296 0.481481
    1. 1. 0.54 0.67928 0.541667 0.42 0.709347 0.259259
    2. 2. 0.62 0.664661 0.375 0.44 0.713829 0.222222
    3. 3. 0.62 0.636919 0.375 0.44 0.734033 0.37037
    4. 4. 0.68 0.586907 0.541667 0.48 0.797542 0.444444

    培训后,您可以轻松使用csv文件进行打印。