使用Tensorflow 2.1.0在GPU上训练CNN时出错

时间:2020-04-07 12:24:14

标签: tensorflow machine-learning deep-learning tensorflow2.x

我已经使用命令(\S+)安装了tensorflow gpu。这已安装了tensorflow版本conda create --name tf_gpu tensorflow-gpu。 这是cuda和cudnn版本的驱动程序信息: After runnung the command nvidia-smi

After running the command conda list cudnn

当我运行以下代码时:

2.1.0
import os
import sys
import random
import numpy as np
import tensorflow as tf
from tensorflow import keras
from tensorflow.keras.models import Model, load_model, save_model
from tensorflow.keras.layers import Input,Dropout,BatchNormalization,Activation,Add,Flatten,Dense,Reshape
from tensorflow.keras.layers import Conv2D, Conv2DTranspose, LeakyReLU
from tensorflow.keras.layers import MaxPooling2D
from tensorflow.keras.layers import concatenate
from tensorflow.keras.callbacks import EarlyStopping, ModelCheckpoint, ReduceLROnPlateau
from tensorflow.keras import backend as K
from tensorflow.keras import optimizers
from tensorflow.keras.preprocessing.image import array_to_img, img_to_array, load_img#,save_img 
tr = np.load("midshot.npy")
ti = np.load("ti.npy")

运行def down_block(x, filters, kernel_size=(3, 3), padding="same", strides=1): c = keras.layers.Conv2D(filters, kernel_size, padding=padding, strides=strides, activation="relu")(x) c = keras.layers.Conv2D(filters, kernel_size, padding=padding, strides=strides, activation="relu")(c) p = keras.layers.MaxPool2D((2, 2), (2, 2))(c) return c, p def up_block(x, skip, filters, kernel_size=(3, 3), padding="same", strides=1): us = keras.layers.UpSampling2D((2, 2))(x) concat = keras.layers.Concatenate()([us, skip]) c = keras.layers.Conv2D(filters, kernel_size, padding=padding, strides=strides, activation="relu")(concat) c = keras.layers.Conv2D(filters, kernel_size, padding=padding, strides=strides, activation="relu")(c) return c def bottleneck(x, filters, kernel_size=(3, 3), padding="same", strides=1): c = keras.layers.Conv2D(filters, kernel_size, padding=padding, strides=strides, activation="relu")(x) c = keras.layers.Conv2D(filters, kernel_size, padding=padding, strides=strides, activation="relu")(c) return c def UNet(): f = [16, 32, 64, 128, 256] inputs = keras.layers.Input((502, 200, 1)) #Matching Dimensions m1 = keras.layers.Conv2D(1, (3, 1), padding = "same", strides = 1)(inputs) m1 = keras.layers.MaxPool2D((2, 1), (2, 1))(m1) m2 = keras.layers.Conv2D(1, (5, 1), padding = "same", strides = 1)(m1) m2 = keras.layers.MaxPool2D((2, 2), (2, 2))(m2) m3 = Conv2DTranspose(1, (2, 10), strides=(1, 1), padding="valid")(m2) m4 = Conv2DTranspose(1, (2, 10), strides=(1, 1), padding="valid")(m3) m5 = Conv2DTranspose(1, (2, 11), strides=(1, 1), padding="valid")(m4) p0 = m5 c1, p1 = down_block(p0, f[0]) #128 -> 64 c2, p2 = down_block(p1, f[1]) #64 -> 32 c3, p3 = down_block(p2, f[2]) #32 -> 16 c4, p4 = down_block(p3, f[3]) #16->8 bn = bottleneck(p4, f[4]) u1 = up_block(bn, c4, f[3]) #8 -> 16 u2 = up_block(u1, c3, f[2]) #16 -> 32 u3 = up_block(u2, c2, f[1]) #32 -> 64 u4 = up_block(u3, c1, f[0]) #64 -> 128 u5 = Conv2DTranspose(8, (7, 7), strides=(2, 2), padding="valid")(u4) u6 = Conv2DTranspose(4, (7, 7), strides=(1, 1), padding="valid")(u5) u7 = Conv2DTranspose(2, (34, 34), strides=(1, 1), padding="valid")(u6) outputs = keras.layers.Conv2D(1, (1, 1), padding="same", activation="relu")(u7) model = keras.models.Model(inputs, outputs) return model model = UNet() model.compile(optimizer="adam", loss="mean_squared_error", metrics=['mse']) model.summary() #Fitting history = model.fit(x=tr, y=ti, batch_size=32, epochs=50, verbose=1, callbacks=None, validation_split=0.1, validation_data=None, shuffle=True, class_weight=None, sample_weight=None, initial_epoch=0, steps_per_epoch=None, validation_steps=None) 后,出现以下错误:

model.fit

我已经尝试了几种方法,例如将TF版本或cuda版本降级,但是没有任何效果。我不明白为什么会这样。我希望有人能帮助我。

谢谢

0 个答案:

没有答案
相关问题