c814903929
2021-02-25 09:48
采纳率: 100%
浏览 77

请问一下,Dataset数据应该怎么传入神经网络呢

from DataSet import get_data
import tensorflow as tf


path = 'C:\\Users\\CYH\\Desktop\\神经网络\\猫狗大战\\train'
c = 'Cat_Dog.csv'
img_Ext = '*.jpg'

images, labels = get_data(path, c, img_Ext)  # 得到的是图像的路径和对应的标签


def get_tensor(image_list, label_list):
    ims = []
    for image in image_list:
        x = tf.io.read_file(image)
        x = tf.image.decode_jpeg(x, channels=3)
        x = tf.image.resize(x, [32, 32])
        ims.append(x)
    img = tf.convert_to_tensor(ims)
    y = tf.convert_to_tensor(label_list)
    return img, y


X, Y = get_tensor(images, labels)
print(len(X))
db = tf.data.Dataset.from_tensor_slices((X, Y))
db = db.shuffle(1000).repeat(250).batch(50, drop_remainder=True)


model = tf.keras.Sequential()
model.add(tf.keras.layers.Conv2D(filters=64, kernel_size=[3, 3], activation='relu', padding='same'))
model.add(tf.keras.layers.Conv2D(filters=64, kernel_size=[3, 3], activation='relu', padding='same'))
model.add(tf.keras.layers.MaxPool2D(pool_size=[2, 2], strides=2))

model.add(tf.keras.layers.Conv2D(filters=128, kernel_size=[3, 3], activation='relu', padding='same'))
model.add(tf.keras.layers.Conv2D(filters=128, kernel_size=[3, 3], activation='relu', padding='same'))
model.add(tf.keras.layers.MaxPool2D(pool_size=[2, 2], strides=2))

model.add(tf.keras.layers.Conv2D(filters=256, kernel_size=[3, 3], activation='relu', padding='same'))
model.add(tf.keras.layers.Conv2D(filters=256, kernel_size=[3, 3], activation='relu', padding='same'))
model.add(tf.keras.layers.MaxPool2D(pool_size=[2, 2], strides=2))

model.add(tf.keras.layers.Conv2D(filters=512, kernel_size=[3, 3], activation='relu', padding='same'))
model.add(tf.keras.layers.Conv2D(filters=512, kernel_size=[3, 3], activation='relu', padding='same'))
model.add(tf.keras.layers.MaxPool2D(pool_size=[2, 2], strides=2))

model.add(tf.keras.layers.Conv2D(filters=512, kernel_size=[3, 3], activation='relu', padding='same'))
model.add(tf.keras.layers.Conv2D(filters=512, kernel_size=[3, 3], activation='relu', padding='same'))
model.add(tf.keras.layers.MaxPool2D(pool_size=[2, 2], strides=2))

model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(units=256, activation='relu'))
model.add(tf.keras.layers.Dense(units=64, activation='relu'))
model.add(tf.keras.layers.Dense(units=10, activation='sigmoid'))

model.compile(optimizer=tf.keras.optimizers.Adam(0.001),
              loss=tf.keras.losses.sparse_categorical_crossentropy,
              metrics=['accuracy'])
model.fit(db,
          epochs=5,
          steps_per_epoch=(len(X))//50)

model.summary()

想问一下,要给神经网络输入数据的话,应该怎么输入呢,我这样写确实可以训练但是看不到准确率

真的搞了很久了,求大佬帮帮忙,给红包也是可以的

  • 写回答
  • 好问题 提建议
  • 关注问题
  • 收藏
  • 邀请回答

3条回答 默认 最新

  • 爱晚乏客游 2021-02-25 13:04
    已采纳

    建议debug,然后一行一行看内容,主要是一些数据内容,不确定的可以跳过,确定下你能确定是什么东西的内容,看下和你预期的有没有一样。要是不会debug,那就用print()慢慢尝试。比如测试下第行9有没有正确传入图片和标签,

    print(images[0])

    print(labels[0])

    看下第一张图片是否正确,然后对应看下的labels是否正确。

    慢慢学习,没有具体工程和报错信息,这么问是问不出怎么结果的,我们也不能确定你什么地方有问题,或者你能确定说你的代码第几行的什么值不是正确的,这样子才能确定你什么地方出问题了。

    如果都正确的话,你就应该是你显示的问题,有出结果但是你没有显示出来而已。

     

     

    已采纳该答案
    评论
    解决 无用
    打赏 举报
  • Bryce__LY 2021-02-25 09:57

    你这个代码看起来没什么问题吧

    评论
    解决 无用
    打赏 举报
  • Bryce__LY 2021-02-25 10:02
    评论
    解决 无用
    打赏 举报

相关推荐 更多相似问题