粼妖战士 海问香 2022-04-09 16:19 采纳率: 100%
浏览 15
已结题

Tensorflow相关问题

我的代码如下所示:

import tensorflow as tf
import numpy as np
import cv2
import os

#全局变量
classes = {'grass':0,'soldiers':1}#数据分类
path_grass='D:/AIR_space/data/grass' #草丛图片路径
path_soldiers='D:/AIR_space/data/soldiers' #士兵图片路径
picture=[] #存放图片
labels=[] #存放标签
files_grass=os.listdir(path_grass)
files_soldiers=os.listdir(path_soldiers)

#读取图片数据并且将其存入到图片和标签变量中
def read_image(path,files,shape=(32,32)):
    for f in files:
        f_path=path+'/'+f
        img=cv2.imread(f_path)
        img=cv2.resize(img,shape)
        img=img.astype(np.float32)
        picture.append(img)
        split_f=f.split('_')
        label_f=int(classes[split_f[0]])
        labels.append(label_f)


#建立dataset
def data_set(data,label):
    train_data=tf.data.Dataset.from_tensor_slices(data)
    train_labels=tf.data.Dataset.from_tensor_slices(label).map(lambda z: tf.one_hot(z,len(classes)))
    train_dataset=tf.data.Dataset.zip((train_data,train_labels)).shuffle(1000).repeat(10).batch(256)
    return train_dataset

#建立CNN模型
def build_model():
    model=tf.keras.Sequential()
    #第一层卷积
    model.add(tf.keras.layers.Conv2D(64,(3,3),padding='same',activation='relu',input_shape=(32,32,3)))
    model.add(tf.keras.layers.MaxPooling2D(padding='same'))
    #第二层卷积
    model.add(tf.keras.layers.Conv2D(128,(3,3),padding='same',activation='relu'))
    model.add(tf.keras.layers.Conv2D(256,(3,3),padding='same',activation='relu'))
    model.add(tf.keras.layers.MaxPooling2D(padding='same'))
    #全连接层
    model.add(tf.keras.layers.Flatten())
    model.add(tf.keras.layers.Dense(64,activation='relu'))
    model.add(tf.keras.layers.Dense(32,activation='relu'))
    model.add(tf.keras.layers.Dropout(0.3))
    model.add(tf.keras.layers.Dense(2,activation='softmax'))
    return model


#主函数部分
read_image(path_grass,files_grass)
read_image(path_soldiers,files_soldiers)
train_data=data_set(picture,labels)
print(train_data)
model_cnn=build_model()
#model_cnn.build(input_shape=[None,32,32,3])
model_cnn.summary()
model_cnn.compile(optimizer=tf.keras.optimizers.Adam(0.001),loss='binary_crossentropy',metrics=['accuracy'])
model_cnn.fit(train_data,batch_size=19,epochs=20)

数据集是192张图片,小兵96张,对应soldiers,草丛96张,对应grass,然后我在训练的时候,发现输出如下图:

img


我很不理解epoch下面那个x/8的那个8表示什么,哪里来的,看参考书说表示训练集数量,可我加载的数据集是192张,求解释那个8是怎么回事,如何修改,谢谢啦

  • 写回答

1条回答 默认 最新

  • ash062 2022-04-09 16:34
    关注

    感觉是len(train_data) // batch_size

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月19日
  • 已采纳回答 4月11日
  • 创建了问题 4月9日

悬赏问题

  • ¥15 r语言Hurst指数
  • ¥15 Acrn IVSHMEM doorbell问题
  • ¥15 yolov5中的val测试集训练时数量变小问题
  • ¥15 MPLS/VPN实验中MPLS的配置问题
  • ¥15 materialstudio氢键计算问题
  • ¥15 echarts图表制作
  • ¥15 halcon根据玻璃面板纹路取区域
  • ¥15 HFSS设计小型化180度耦合器
  • ¥15 使用CInternetSession,CHttpFile读取网页文件时有些电脑上会卡住怎么办?
  • ¥15 水下机器人的半物理仿真研究