洗剪吹队长 2020-04-10 18:14 采纳率: 0%
浏览 667
已结题

tf.keras图像二分类,predict()时卡死是什么原因

根据https://tensorflow.google.cn/tutorials/images/classification 里的例子进行图像二分类

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from PIL import Image
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv2D, Flatten, Dropout, MaxPooling2D
from tensorflow.keras.preprocessing.image import ImageDataGenerator

train_yes_dir = 'E:\\ml\\tr\\logo_yes\\'
train_no_dir = 'E:\\ml\\tr\\logo_no\\'
validation_yes_dir = 'E:\\ml\\v\\yes_v\\'
validation_no_dir = 'E:\\ml\\v\\no_v\\'

train_image_generator = ImageDataGenerator(rescale=1./255) # Generator for our training data
validation_image_generator = ImageDataGenerator(rescale=1./255)

batch_size = 32
epochs = 10
IMG_HEIGHT = 64
IMG_WIDTH = 64
# 训练数据
train_data_gen = train_image_generator.flow_from_directory(batch_size=batch_size,
                                                           directory='E:\\ml\\tr\\',
                                                           color_mode='rgb',
                                                           shuffle=True,
                                                           target_size=(IMG_HEIGHT, IMG_WIDTH),
                                                           class_mode='binary')
#    验证数据                                                                                                           
val_data_gen = validation_image_generator.flow_from_directory(batch_size=batch_size,
                                                              directory='E:\\ml\\v\\',
                                                              color_mode='rgb',
                                                              shuffle=True,
                                                              target_size=(IMG_HEIGHT, IMG_WIDTH),
                                                              class_mode='binary')
#  建立模型
model = Sequential([
    Conv2D(16, 3, padding='same', activation='relu', input_shape=(IMG_HEIGHT, IMG_WIDTH ,3)),
    MaxPooling2D(),
    Conv2D(32, 3, padding='same', activation='relu'),
    MaxPooling2D(),
    Conv2D(64, 3, padding='same', activation='relu'),
    MaxPooling2D(),
    Flatten(),
    Dense(512, activation='relu'),
    Dense(1)
])
model.compile(optimizer='adam',
              loss=tf.keras.losses.BinaryCrossentropy(from_logits=True),
              metrics=['accuracy'])
model.summary()
Model: "sequential"
_________________________________________________________________
Layer (type)                 Output Shape              Param #   
=================================================================
conv2d_12 (Conv2D)           (None, 64, 64, 16)        448       
_________________________________________________________________
max_pooling2d_12 (MaxPooling (None, 32, 32, 16)        0         
_________________________________________________________________
conv2d_13 (Conv2D)           (None, 32, 32, 32)        4640      
_________________________________________________________________
max_pooling2d_13 (MaxPooling (None, 16, 16, 32)        0         
_________________________________________________________________
conv2d_14 (Conv2D)           (None, 16, 16, 64)        18496     
_________________________________________________________________
max_pooling2d_14 (MaxPooling (None, 8, 8, 64)          0         
_________________________________________________________________
flatten_4 (Flatten)          (None, 4096)              0         
_________________________________________________________________
dense_8 (Dense)              (None, 512)               2097664   
_________________________________________________________________
dense_9 (Dense)              (None, 1)                 513       
=================================================================
Total params: 2,121,761
Trainable params: 2,121,761
Non-trainable params: 0
_________________________________________________________________

history = model.fit_generator(
    train_data_gen,
    steps_per_epoch=312 // batch_size,
    epochs=epochs,
    validation_data=val_data_gen,
    validation_steps=100 // batch_size
)
Epoch 1/10
9/9 [==============================] - 1s 120ms/step - loss: 0.7537 - accuracy: 0.5357 - val_loss: 0.6520 - val_accuracy: 0.5000
Epoch 2/10
9/9 [==============================] - 1s 111ms/step - loss: 0.5691 - accuracy: 0.5590 - val_loss: 0.4826 - val_accuracy: 0.7917
Epoch 3/10
9/9 [==============================] - 1s 112ms/step - loss: 0.4936 - accuracy: 0.7750 - val_loss: 0.2535 - val_accuracy: 1.0000
Epoch 4/10
9/9 [==============================] - 1s 106ms/step - loss: 0.2540 - accuracy: 0.9571 - val_loss: 0.1010 - val_accuracy: 1.0000
Epoch 5/10
9/9 [==============================] - 1s 108ms/step - loss: 0.1271 - accuracy: 0.9714 - val_loss: 0.0308 - val_accuracy: 1.0000
Epoch 6/10
9/9 [==============================] - 1s 112ms/step - loss: 0.1058 - accuracy: 0.9786 - val_loss: 0.0299 - val_accuracy: 1.0000
Epoch 7/10
9/9 [==============================] - 1s 109ms/step - loss: 0.0296 - accuracy: 0.9964 - val_loss: 0.0173 - val_accuracy: 1.0000
Epoch 8/10
9/9 [==============================] - 1s 111ms/step - loss: 0.0463 - accuracy: 0.9929 - val_loss: 0.0119 - val_accuracy: 1.0000
Epoch 9/10
9/9 [==============================] - 1s 110ms/step - loss: 0.0471 - accuracy: 0.9893 - val_loss: 0.0150 - val_accuracy: 1.0000
Epoch 10/10
9/9 [==============================] - 1s 115ms/step - loss: 0.0303 - accuracy: 0.9893 - val_loss: 0.0151 - val_accuracy: 1.0000

图片说明
结果红框的值无限在跑 不出结果
求大神解答

  • 写回答

2条回答 默认 最新

  • threenewbee 2020-04-10 23:54
    关注

    你贴出来的代码里并没有调用predict

    评论

报告相同问题?

悬赏问题

  • ¥15 slam rangenet++配置
  • ¥15 对于相关问题的求解与代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作
  • ¥15 求NPF226060磁芯的详细资料
  • ¥15 使用R语言marginaleffects包进行边际效应图绘制
  • ¥20 usb设备兼容性问题
  • ¥15 错误(10048): “调用exui内部功能”库命令的参数“参数4”不能接受空数据。怎么解决啊