多输入卷积神经网络在TensorFlow 2.0中无响应

我正在尝试开发一个多输入的卷积神经网络,参考了用于花卉分级的多输入卷积神经网络这篇文章中的架构。

我有一个csv文件,其中存储了每个数据项的值,并且对于每个项目,我从不同角度捕获了4张图片。当我运行以下代码时,网络被正确打印出来,但它似乎从未开始训练,因为没有任何反应,并且使用nvidia-smi查看的GPU使用率低于5%。

kilograms_trees = tf.data.experimental.CsvDataset(        filenames='dataset/agrumeto.csv',        record_defaults=[tf.float32],        field_delim=",",        header=True)kilo_train = kilograms_trees.take(35)kilo_test = kilograms_trees.skip(35)def create_conv_layer(input):    x = tf.keras.layers.Conv2D(32, (7, 7), activation='relu')(input)    x = tf.keras.layers.MaxPooling2D((2, 2), (2,2))(x)    x = tf.keras.Model(inputs=input, outputs=x)    return xinputA = tf.keras.Input(shape=(size,size,3))inputB = tf.keras.Input(shape=(size,size,3))inputC = tf.keras.Input(shape=(size,size,3))inputD = tf.keras.Input(shape=(size,size,3))x = create_conv_layer(inputA)y = create_conv_layer(inputB)w = create_conv_layer(inputC)z = create_conv_layer(inputD)# combine the output of the two branchescombined = tf.keras.layers.concatenate([x.output, y.output, w.output, z.output])layer_1 = tf.keras.layers.Conv2D(16, (3,3), activation="relu")(combined)layer_1 = tf.keras.layers.MaxPooling2D((2, 2))(layer_1)layer_2 = tf.keras.layers.Conv2D(16, (3,3), activation="relu")(layer_1)layer_2 = tf.keras.layers.MaxPooling2D((2, 2), (2,2))(layer_2)layer_3 = tf.keras.layers.Conv2D(32, (3,3), activation="relu")(layer_2)layer_3 = tf.keras.layers.MaxPooling2D((2, 2), (2,2))(layer_3)layer_4 = tf.keras.layers.Conv2D(32, (3,3), activation="relu")(layer_3)layer_4 = tf.keras.layers.MaxPooling2D((2, 2), (2,2))(layer_4)flatten = tf.keras.layers.Flatten()(layer_4)hidden1 = tf.keras.layers.Dense(10, activation='relu')(flatten)output = tf.keras.layers.Dense(1, activation='relu')(hidden1)model = tf.keras.Model(inputs=[x.input, y.input, w.input, z.input], outputs=output)print(model.summary())model.compile(optimizer='adam',              loss="mean_absolute_percentage_error")print("[INFO] training model...")model.fit([trainA, trainB, trainC, trainD], kilo_train, epochs=5, batch_size=4)test_loss, test_acc = model.evaluate([testA, testB, testC, testD], kilo_test)print(test_acc)

以下是nvidia-smi的输出结果:

+-----------------------------------------------------------------------------+| NVIDIA-SMI 418.40.04    Driver Version: 418.40.04    CUDA Version: 10.1     ||-------------------------------+----------------------+----------------------+| GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC || Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. ||===============================+======================+======================||   0  GeForce GTX 1050    On   | 00000000:01:00.0 Off |                  N/A || N/A   54C    P0    N/A /  N/A |   3830MiB /  4042MiB |      8%      Default |+-------------------------------+----------------------+----------------------++-----------------------------------------------------------------------------+| Processes:                                                       GPU Memory ||  GPU       PID   Type   Process name                             Usage      ||=============================================================================||    0       909      C   ...ycharmProjects/agrumeto/venv/bin/python  3159MiB ||    0      1729      G   /usr/lib/xorg/Xorg                            27MiB ||    0      1870      G   /usr/bin/gnome-shell                          69MiB ||    0      6290      G   /usr/lib/xorg/Xorg                           273MiB ||    0      6420      G   /usr/bin/gnome-shell                         127MiB ||    0      6834      G   ...quest-channel-token=6261236721362009153    85MiB ||    0      8806      G   ...pycharm-professional/132/jre64/bin/java     2MiB ||    0     12830      G   ...-token=60E939FEF0A8E3D5C46B3D6911048536    31MiB ||    0     27478      G   ...-token=ECA4D3D9ADD8448674D34492E89E40E3    51MiB |+-----------------------------------------------------------------------------+

以下是输出控制台的最后几行内容:

conv2d_7 (Conv2D)               (None, 14, 14, 32)   9248        max_pooling2d_6[0][0]            __________________________________________________________________________________________________max_pooling2d_7 (MaxPooling2D)  (None, 7, 7, 32)     0           conv2d_7[0][0]                   __________________________________________________________________________________________________flatten (Flatten)               (None, 1568)         0           max_pooling2d_7[0][0]            __________________________________________________________________________________________________dense (Dense)                   (None, 10)           15690       flatten[0][0]                    __________________________________________________________________________________________________dense_1 (Dense)                 (None, 1)            11          dense[0][0]                      ==================================================================================================Total params: 69,301Trainable params: 69,301Non-trainable params: 0__________________________________________________________________________________________________None[INFO] training model...

回答:

我忘记禁用TensorFlow 2.0中默认启用的Eager Execution。这就是问题所在。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注