转换成tfrecords格式之后,图片和标签不拟合,请教各位大神怎么回事儿啊,
在进行转换之后,图片和标签出现了不拟合的情况,导致了最后loss曲线出现了条约的情况,我是给猫和狗进行标签,分别标成0和1,但是在最后打印图片检查的时候发现有的猫被标成了狗也就是1,有的狗被标成了猫,也就是1,仔仔细细的检查了很多遍,没有发现问题在哪里。请求大神帮助我一下,或者之前碰见类似的问题,用了论坛上其他的代码还是出现了标签被标错的情况,下面是我自己弄得代码,到底哪里错了,请帮助我一下,在线等
def get_file(file_dir): #'C:\\Users\\Administrator\\catdog2'
images=[]
temp=[]
for root,sub_folders,files in os.walk(file_dir):
#print(sub_folders)
for name in files:
images.append(os.path.join(root,name))
for name in sub_folders:
temp.append(os.path.join(root,name))
# print(os.path.join(root,name))
labels=[]
for one_folders in temp:
n_ming=len(os.listdir(one_folders))
#print(n_ming)
letter=one_folders.split('\\')[-1]
#print(letter)
if letter=='dogs':
labels=np.append(labels,n_ming*[0])
else:
labels=np.append(labels,n_ming*[1])
temp=np.array([images,labels])
temp=temp.transpose()
np.random.shuffle(temp)
image_list=list(temp[:,0])
label_list=list(temp[:,1])
label_list=[int(float(i)) for i in label_list]
return image_list,label_list
image_list,label_list=get_file('C:\\Users\\Administrator\\catdog2')
#print(image_list)
#print(label_list)
def int64_feature(value):
return tf.train.Feature(int64_list=tf.train.Int64List(value=value))
def bytes_feature(value):
return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))
def convert_to_tfrecord(images_list,labels_list,save_dir,name):
filename=os.path.join(save_dir,name+'.tfrecords')
#filename=name+'.tfrecords'
n_samples=len(labels_list)
writer=tf.python_io.TFRecordWriter(filename)
print('\nTransform start...')
for i in np.arange(0,n_samples):
#try:
image=cv2.imread(images_list[i])
print(images_list[i])
image_raw=image.tobytes()
label=[int(labels_list[i])]#转换成整数形式
print(labels_list[i])
example=tf.train.Example(features=tf.train.Features(
feature={
'label':int64_feature(label),
'image_raw':bytes_feature(image_raw)
}))
writer.write(example.SerializeToString())
#except IOError as e:
#print('Could not read:',images[i])
writer.close()
print('Transform done!')
images_list,labels_list=get_file('C:\\Users\\Administrator\\catdog2')
#print(images_list)
#print(labels_list)
convert_to_tfrecord(images_list,labels_list,'C:\\Users\\Administrator','新数据2')
def read_and_decode(filename):
import tensorflow as tf
import numpy as np
#filename="train.tfrecords"
filename_queue=tf.train.string_input_producer([filename])
reader=tf.TFRecordReader()
_,serialized_example=reader.read(filename_queue)
#init=tf.global_variables_initializer()
#sess=tf.Session()
#sess.run(init)
#print(sess.run(serialized_example))
img_features=tf.parse_single_example(serialized_example,
features={
'label':tf.FixedLenFeature([],tf.int64),
'image_raw':tf.FixedLenFeature([],tf.string),
})
img=tf.decode_raw(img_features['image_raw'],tf.uint8)
img=tf.reshape(img,[227,227,3])
#img=tf.image.per_image_standardization(img)#标准化
#print(np.shape(img))
#print(type(features['label']))
label=tf.cast(img_features['label'],tf.int32)
print(type(label))
print(np.shape(img))
#img_batch,label_batch=tf.train.shuffle_batch([img,label],batch_size=1,capacity=10,min_after_dequeue=1)
return img,label#img_batch,label_batch
def get_file(file_dir): #'C:\\Users\\Administrator\\catdog2'
images=[]
temp=[]
for root,sub_folders,files in os.walk(file_dir):
#print(sub_folders)
for name in files:
images.append(os.path.join(root,name))
for name in sub_folders:
temp.append(os.path.join(root,name))
# print(os.path.join(root,name))
labels=[]
for one_folders in temp:
n_ming=len(os.listdir(one_folders))
#print(n_ming)
letter=one_folders.split('\\')[-1]
#print(letter)
if letter=='dogs':
labels=np.append(labels,n_ming*[0])
else:
labels=np.append(labels,n_ming*[1])
temp=np.array([images,labels])
temp=temp.transpose()
np.random.shuffle(temp)
image_list=list(temp[:,0])
label_list=list(temp[:,1])
label_list=[int(float(i)) for i in label_list]
return image_list,label_list
image_list,label_list=get_file('C:\\Users\\Administrator\\catdog2')
#print(image_list)
#print(label_list)
def int64_feature(value):
return tf.train.Feature(int64_list=tf.train.Int64List(value=value))
def bytes_feature(value):
return tf.train.Feature(bytes_list=tf.train.BytesList(value=[value]))
def convert_to_tfrecord(images_list,labels_list,save_dir,name):
filename=os.path.join(save_dir,name+'.tfrecords')
#filename=name+'.tfrecords'
n_samples=len(labels_list)
writer=tf.python_io.TFRecordWriter(filename)
print('\nTransform start...')
for i in np.arange(0,n_samples):
#try:
image=cv2.imread(images_list[i])
print(images_list[i])
image_raw=image.tobytes()
label=[int(labels_list[i])]#转换成整数形式
print(labels_list[i])
example=tf.train.Example(features=tf.train.Features(
feature={
'label':int64_feature(label),
'image_raw':bytes_feature(image_raw)
}))
writer.write(example.SerializeToString())
#except IOError as e:
#print('Could not read:',images[i])
writer.close()
print('Transform done!')
images_list,labels_list=get_file('C:\\Users\\Administrator\\catdog2')
#print(images_list)
#print(labels_list)
convert_to_tfrecord(images_list,labels_list,'C:\\Users\\Administrator','新数据2')
def read_and_decode(filename):
import tensorflow as tf
import numpy as np
#filename="train.tfrecords"
filename_queue=tf.train.string_input_producer([filename])
reader=tf.TFRecordReader()
_,serialized_example=reader.read(filename_queue)
#init=tf.global_variables_initializer()
#sess=tf.Session()
#sess.run(init)
#print(sess.run(serialized_example))
img_features=tf.parse_single_example(serialized_example,
features={
'label':tf.FixedLenFeature([],tf.int64),
'image_raw':tf.FixedLenFeature([],tf.string),
})
img=tf.decode_raw(img_features['image_raw'],tf.uint8)
img=tf.reshape(img,[227,227,3])
#img=tf.image.per_image_standardization(img)#标准化
#print(np.shape(img))
#print(type(features['label']))
label=tf.cast(img_features['label'],tf.int32)
print(type(label))
print(np.shape(img))
#img_batch,label_batch=tf.train.shuffle_batch([img,label],batch_size=1,capacity=10,min_after_dequeue=1)
return img,label#img_batch,label_batch
...全文
相关推荐
tensorflow TFRecords文件的生成和读取的方法
本篇文章主要介绍了tensorflow TFRecords文件的生成和读取的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
Tensorflow之构建自己的图片数据集TFrecords的方法
本篇文章主要介绍了Tensorflow之构建自己的图片数据集TFrecords的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
OpenImage2TFRecords:该项目将OpenImage注释和标签格式转换为Tensorflow格式
OpenImage2TFRecords 该项目将OpenImage txt注释和标签格式转换为Tensorflow tfrecord格式
python将原始jpg图片数据转换成tfrecords文件送入神经网络训练
用tensorflow框架进行模型训练的时候,有部分需要将原数据的jpg格式的图片转化成tfrecords格式才能喂给模型进行训练。所以写了这个代码。
TensorFLow 不同大小图片的TFrecords存取实例
今天小编就为大家分享一篇TensorFLow 不同大小图片的TFrecords存取实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧


