我已经使用命令(\S+)
安装了tensorflow gpu。这已安装了tensorflow版本conda create --name tf_gpu tensorflow-gpu
。
这是cuda和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版本降级,但是没有任何效果。我不明白为什么会这样。我希望有人能帮助我。
谢谢