转换成tfrecords格式之后,图片和标签不拟合,请教各位大神怎么回事儿啊,

学机器学习的科比 2018-10-31 12:14:51
在进行转换之后,图片和标签出现了不拟合的情况,导致了最后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
...全文
177 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
标签如果出现少量图片标错,会出现上述loss震荡的情况,但是标签到底哪里标错了,还是不知道,希望各位能给与帮助
  • 打赏
  • 举报
回复
不知道怎么回事,但也不是没有收获,知道了标签如果出现了少量标错,会出现loss曲线震荡的情况
  • 打赏
  • 举报
回复
嗯呢,这是python 这个问题还没有解决,能不能帮助我一下
  • 打赏
  • 举报
回复
这是python么
zara 2018-10-31
  • 打赏
  • 举报
回复
发错版了吧,什么行业什么语言环境的,要到相应版块才行啊。

21,459

社区成员

发帖
与我相关
我的任务
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
  • 汇编语言
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧