粼妖战士 海问香 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 请问我该如何添加自己的数据去运行蚁群算法代码
  • ¥20 用HslCommunication 连接欧姆龙 plc有时会连接失败。报异常为“未知错误”
  • ¥15 网络设备配置与管理这个该怎么弄
  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码