TTA*_*TTA 5 python machine-learning deep-learning keras tensorflow
我正在尝试训练我的图像。该数据的大小为 50.000 张图像。
\n我的图像属性是:
\n\n如果我应该更改图像属性,我该怎么做?
\n这是我的第一个图像分类器工作,因此可能会有很多错误。敬请谅解。
\n你能帮助改进我的代码吗?
\n这是我的代码
\nfrom tensorflow.keras.models import Sequential\nfrom tensorflow.keras.layers import Conv2D,MaxPooling2D,Activation,Dropout,Flatten,Dense\nfrom tensorflow.keras.preprocessing.image import ImageDataGenerator,img_to_array,load_img\nimport matplotlib.pyplot as plt\nfrom glob import glob\nfrom PIL import Image\nimport os\n\n\nimport numpy as np\n\ntrain_path="D\xc3\xbczg\xc3\xbcn2/"\n\nimages = [train_path for train_path in os.listdir() if train_path.endswith((\'jpeg\', \'png\', \'jpg\'))]\nfor x in images:\n img = Image.open(x)\n img.thumbnail((600,600))\n img.save("resized_"+x, optimize=True, quality=40)\ntest_path="Test/"\ndata=load_img(train_path + "Basler_acA1440-220um__40052667__20201123_114618747_7932_result.jpg")\nx=np.asarray(data)\n\nplt.imshow(data)\nplt.axis("off")\nplt.show()\n\n\nprint(x.shape)\nclassName=glob(train_path + "/*")\nprint(className)\nnumberOfClass=len(className)\nprint("NumberOfClass:",numberOfClass)\n\n#CNN model\n\nmodel=Sequential()\nmodel.add(Conv2D(32,(3,3),input_shape=(224,224,3)))#xshape burada gelen resimin pixseli 3 ise rgb yi tesmil ediyor so that senin \xc3\xa7ivi resimlerine g\xc3\xb6re ayarla\nmodel.add(Activation("relu"))\nmodel.add(MaxPooling2D())\nmodel.add(Conv2D(32,(3,3)))#xshape burada gelen resimin pixseli 3 ise rgb yi tesmil ediyor so that senin \xc3\xa7ivi resimlerine g\xc3\xb6re ayarla"""\nmodel.add(Activation("relu"))\nmodel.add(MaxPooling2D())\n\nmodel.add(Flatten())\nmodel.add(Dense(1024))#1024 n\xc3\xb6rondan olu\xc5\x9fuyor\nmodel.add(Activation("relu"))\nmodel.add(Dropout(0.5))\nmodel.add(Dense(numberOfClass))#output\nmodel.add(Activation("softmax"))\n\nmodel.compile(loss="categorical_crossentropy",optimizer="rmsprop",metrics=["accuracy"])\n\nbatch_size=32# her iterasyonda 32 resmi kullan\n\n#data generator\n\ntrain_datagen=ImageDataGenerator(rescale=1./255,shear_range=0.3,\n horizontal_flip=True,zoom_range=0.3)#rgb 0-255 0-1 ile bir aras\xc4\xb1 de\xc4\x9fer al\xc4\xb1yoruz,shear sa\xc4\x9fa sola yat\xc4\xb1rma\ntest_datagen=(ImageDataGenerator(rescale=1./255))\n\ntrain_generator=train_datagen.flow_from_directory(train_path,\n target_size=x.shape[:2],batch_size=batch_size,color_mode="rgb",\n class_mode="categorical")\ntest_generator=test_datagen.flow_from_directory(test_path,\n target_size=x.shape[:2],batch_size=batch_size,color_mode="rgb",\n class_mode="categorical")\n\nmodel.fit_generator(generator=train_generator,steps_per_epoch=1600 // batch_size,epochs=100,validation_data=test_generator,\n validation_steps=800 // batch_size)\n \n
Run Code Online (Sandbox Code Playgroud)\n这是我的输出:
\nNumberOfClass: 11376\n2020-12-15 14:10:26.449262: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library nvcuda.dll\n2020-12-15 14:10:27.159243: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1561] Found device 0 with properties: \npciBusID: 0000:01:00.0 name: GeForce GTX 1660 Ti computeCapability: 7.5\ncoreClock: 1.59GHz coreCount: 24 deviceMemorySize: 6.00GiB deviceMemoryBandwidth: 268.26GiB/s\n2020-12-15 14:10:27.159530: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll\n2020-12-15 14:10:27.221768: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_10.dll\n2020-12-15 14:10:27.269324: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cufft64_10.dll\n2020-12-15 14:10:27.275602: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library curand64_10.dll\n2020-12-15 14:10:27.301737: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusolver64_10.dll\n2020-12-15 14:10:27.314461: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusparse64_10.dll\n2020-12-15 14:10:27.407152: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudnn64_7.dll\n2020-12-15 14:10:27.407410: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1703] Adding visible gpu devices: 0\n2020-12-15 14:10:27.407830: I tensorflow/core/platform/cpu_feature_guard.cc:143] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2\n2020-12-15 14:10:27.416924: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x193e2fdee00 initialized for platform Host (this does not guarantee that XLA will be used). Devices:\n2020-12-15 14:10:27.417440: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): Host, Default Version\n2020-12-15 14:10:27.417880: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1561] Found device 0 with properties: \npciBusID: 0000:01:00.0 name: GeForce GTX 1660 Ti computeCapability: 7.5\ncoreClock: 1.59GHz coreCount: 24 deviceMemorySize: 6.00GiB deviceMemoryBandwidth: 268.26GiB/s\n2020-12-15 14:10:27.418242: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudart64_101.dll\n2020-12-15 14:10:27.418413: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_10.dll\n2020-12-15 14:10:27.418586: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cufft64_10.dll\n2020-12-15 14:10:27.418754: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library curand64_10.dll\n2020-12-15 14:10:27.418922: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusolver64_10.dll\n2020-12-15 14:10:27.419095: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cusparse64_10.dll\n2020-12-15 14:10:27.419268: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cudnn64_7.dll\n2020-12-15 14:10:27.419477: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1703] Adding visible gpu devices: 0\n2020-12-15 14:10:28.461954: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1102] Device interconnect StreamExecutor with strength 1 edge matrix:\n2020-12-15 14:10:28.462106: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1108] 0 \n2020-12-15 14:10:28.462194: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1121] 0: N \n2020-12-15 14:10:28.462442: I tensorflow/core/common_runtime/gpu/gpu_device.cc:1247] Created TensorFlow device (/job:localhost/replica:0/task:0/device:GPU:0 with 4750 MB memory) -> physical GPU (device: 0, name: GeForce GTX 1660 Ti, pci bus id: 0000:01:00.0, compute capability: 7.5)\n2020-12-15 14:10:28.465422: I tensorflow/compiler/xla/service/service.cc:168] XLA service 0x1942c7ee0b0 initialized for platform CUDA (this does not guarantee that XLA will be used). Devices:\n2020-12-15 14:10:28.465660: I tensorflow/compiler/xla/service/service.cc:176] StreamExecutor device (0): GeForce GTX 1660 Ti, Compute Capability 7.5\nFound 0 images belonging to 0 classes.\nFound 0 images belonging to 0 classes.\nWARNING:tensorflow:From C:/Users/tatu/PycharmProjects/pythonProject4/main.py:70: Model.fit_generator (from tensorflow.python.keras.engine.training) is deprecated and will be removed in a future version.\nInstructions for updating:\nPlease use Model.fit, which supports generators.\nEpoch 1/100\n2020-12-15 14:10:30.182839: I tensorflow/stream_executor/platform/default/dso_loader.cc:44] Successfully opened dynamic library cublas64_10.dll\nTraceback (most recent call last):\n File "C:/Users/tatu/PycharmProjects/pythonProject4/main.py", line 70, in <module>\n validation_steps=800 // batch_size)\n File "C:\\Users\\tatu\\miniconda3\\envs\\tensorfloww\\lib\\site-packages\\tensorflow\\python\\util\\deprecation.py", line 324, in new_func\n return func(*args, **kwargs)\n File "C:\\Users\\tatu\\miniconda3\\envs\\tensorfloww\\lib\\site-packages\\tensorflow\\python\\keras\\engine\\training.py", line 1479, in fit_generator\n initial_epoch=initial_epoch)\n File "C:\\Users\\tatu\\miniconda3\\envs\\tensorfloww\\lib\\site-packages\\tensorflow\\python\\keras\\engine\\training.py", line 66, in _method_wrapper\n return method(self, *args, **kwargs)\n File "C:\\Users\\tatu\\miniconda3\\envs\\tensorfloww\\lib\\site-packages\\tensorflow\\python\\keras\\engine\\training.py", line 848, in fit\n tmp_logs = train_function(iterator)\n File "C:\\Users\\tatu\\miniconda3\\envs\\tensorfloww\\lib\\site-packages\\tensorflow\\python\\eager\\def_function.py", line 580, in __call__\n result = self._call(*args, **kwds)\n File "C:\\Users\\tatu\\miniconda3\\envs\\tensorfloww\\lib\\site-packages\\tensorflow\\python\\eager\\def_function.py", line 644, in _call\n return self._stateless_fn(*args, **kwds)\n File "C:\\Users\\tatu\\miniconda3\\envs\\tensorfloww\\lib\\site-packages\\tensorflow\\python\\eager\\function.py", line 2420, in __call__\n return graph_function._filtered_call(args, kwargs) # pylint: disable=protected-access\n File "C:\\Users\\tatu\\miniconda3\\envs\\tensorfloww\\lib\\site-packages\\tensorflow\\python\\eager\\function.py", line 1665, in _filtered_call\n self.captured_inputs)\n File "C:\\Users\\tatu\\miniconda3\\envs\\tensorfloww\\lib\\site-packages\\tensorflow\\python\\eager\\function.py", line 1746, in _call_flat\n ctx, args, cancellation_manager=cancellation_manager))\n File "C:\\Users\\tatu\\miniconda3\\envs\\tensorfloww\\lib\\site-packages\\tensorflow\\python\\eager\\function.py", line 598, in call\n ctx=ctx)\n File "C:\\Users\\tatu\\miniconda3\\envs\\tensorfloww\\lib\\site-packages\\tensorflow\\python\\eager\\execute.py", line 60, in quick_execute\n inputs, attrs, num_outputs)\ntensorflow.python.framework.errors_impl.InvalidArgumentError: Reduction axis -1 is empty in shape [0,0]\n [[node ArgMax (defined at /Users/tatu/PycharmProjects/pythonProject4/main.py:70) ]] [Op:__inference_train_function_921]\n\nFunction call stack:\ntrain_function\n\n2020-12-15 14:10:30.637723: W tensorflow/core/kernels/data/generator_dataset_op.cc:103] Error occurred when finalizing GeneratorDataset iterator: Failed precondition: Python interpreter state is not initialized. The process may be terminated.\n [[{{node PyFunc}}]]\n\nProcess finished with exit code 1\n\n
Run Code Online (Sandbox Code Playgroud)\n这是我的错误
\nFunction call stack:\ntrain_function\n\n2020-12-15 14:10:30.637723: W tensorflow/core/kernels/data/generator_dataset_op.cc:103] Error occurred when finalizing GeneratorDataset iterator: Failed precondition: Python interpreter state is not initialized. The process may be terminated.\n [[{{node PyFunc}}]]\n
Run Code Online (Sandbox Code Playgroud)\n
[编辑] 如前所述,您的输入模型需要匹配图像形状。
如果你使用这个:
model.add(Conv2D(32,(3,3),input_shape=(224,224,3)))
Run Code Online (Sandbox Code Playgroud)
您的输入图像尺寸应为 (224, 224, 3),正如您所示,输入为 1440x1080,但您将其转换为 600x600,对吧?选择一种分辨率并坚持使用。但如果您使用预训练模型,则需要使用模型的分辨率。
您无法更改经过训练或已构建模型的输入层形状。这就是他所抱怨的。预期输入有 4 个维度,而您传递的是 3 个维度。
model.build(input_shape=(150, 150, 3)) # what you did
model.build(input_shape=(w, x, y, z)) # what you should do
Run Code Online (Sandbox Code Playgroud)
首先,检查数据的维度,它们是 RGB、RGBA,我假设由于您使用的是 CNN,所以您正在处理图像(这可能不是真的)。如果您的数据形状与模型不兼容,并且想要使用相同的模型,则可能需要转换数据。另一种方法是查找或创建另一个使用数据形状作为输入的模型。
正如 David Waterworth 所指出的,我认为在您的情况下,第一个维度 w 与使用的 bash 大小相关,而 (x, y, z) 与数据本身相关。
归档时间: |
|
查看次数: |
14297 次 |
最近记录: |