Tensorflow利用自制的数据集做图像识别，程序卡在读取tfrecord文件不跑 40C

`````` import tensorflow as tf
from encode_to_tfrecords import create_record, create_test_record,  read_and_decode, get_batch, get_test_batch

n_input = 154587
n_classes = 3
dropout = 0.5
x = tf.placeholder(tf.float32, [None, n_input])
y = tf.placeholder(tf.int32, [None, n_classes])
keep_drop = tf.placeholder(tf.float32)

class network(object):

def inference(self, images,keep_drop):
####################################################################################################################
# 向量转为矩阵

#  images = tf.reshape(images, shape=[-1, 39,39, 3])

images = tf.reshape(images, shape=[-1, 227, 227, 3])  # [batch, in_height, in_width, in_channels]

images = (tf.cast(images, tf.float32) / 255. - 0.5) * 2  # 归一化处理
####################################################################################################################

# 第一层  定义卷积偏置和下采样

self.biases['conv1'])

relu1 = tf.nn.relu(conv1)

pool1 = tf.nn.max_pool(relu1, ksize=[1, 3, 3, 1], strides=[1, 2, 2, 1], padding='VALID')

# 第二层

self.biases['conv2'])

relu2 = tf.nn.relu(conv2)

pool2 = tf.nn.max_pool(relu2, ksize=[1, 3, 3, 1], strides=[1, 2, 2, 1], padding='VALID')

# 第三层

self.biases['conv3'])

relu3 = tf.nn.relu(conv3)

#  pool3=tf.nn.max_pool(relu3, ksize=[1, 2, 2, 1], strides=[1, 2, 2, 1], padding='VALID')

self.biases['conv4'])

relu4 = tf.nn.relu(conv4)

self.biases['conv5'])

relu5 = tf.nn.relu(conv5)

pool5 = tf.nn.max_pool(relu5, ksize=[1, 3, 3, 1], strides=[1, 2, 2, 1], padding='VALID')

# 全连接层1，先把特征图转为向量

flatten = tf.reshape(pool5, [-1, self.weights['fc1'].get_shape().as_list()[0]])
# dropout比率选用0.5

drop1 = tf.nn.dropout(flatten, keep_drop)

fc1 = tf.matmul(drop1, self.weights['fc1']) + self.biases['fc1']

fc_relu1 = tf.nn.relu(fc1)

fc2 = tf.matmul(fc_relu1, self.weights['fc2']) + self.biases['fc2']

fc_relu2 = tf.nn.relu(fc2)

fc3 = tf.matmul(fc_relu2, self.weights['fc3']) + self.biases['fc3']

return fc3

def __init__(self):
# 初始化权值和偏置

with tf.variable_scope("weights"):
self.weights = {

# 39*39*3->36*36*20->18*18*20

'conv1': tf.get_variable('conv1', [11, 11, 3, 96],
initializer=tf.contrib.layers.xavier_initializer_conv2d()),

# 18*18*20->16*16*40->8*8*40

'conv2': tf.get_variable('conv2', [5, 5, 96, 256],
initializer=tf.contrib.layers.xavier_initializer_conv2d()),

# 8*8*40->6*6*60->3*3*60

'conv3': tf.get_variable('conv3', [3, 3, 256, 384],
initializer=tf.contrib.layers.xavier_initializer_conv2d()),

# 3*3*60->120

'conv4': tf.get_variable('conv4', [3, 3, 384, 384],
initializer=tf.contrib.layers.xavier_initializer_conv2d()),

'conv5': tf.get_variable('conv5', [3, 3, 384, 256],
initializer=tf.contrib.layers.xavier_initializer_conv2d()),

'fc1': tf.get_variable('fc1', [6 * 6 * 256, 4096], initializer=tf.contrib.layers.xavier_initializer()),

'fc2': tf.get_variable('fc2', [4096, 4096], initializer=tf.contrib.layers.xavier_initializer()),

'fc3': tf.get_variable('fc3', [4096, 1000], initializer=tf.contrib.layers.xavier_initializer()),

}

with tf.variable_scope("biases"):
self.biases = {

'conv1': tf.get_variable('conv1', [96, ],
initializer=tf.constant_initializer(value=0.1, dtype=tf.float32)),

'conv2': tf.get_variable('conv2', [256, ],
initializer=tf.constant_initializer(value=0.1, dtype=tf.float32)),

'conv3': tf.get_variable('conv3', [384, ],
initializer=tf.constant_initializer(value=0.1, dtype=tf.float32)),

'conv4': tf.get_variable('conv4', [384, ],
initializer=tf.constant_initializer(value=0.1, dtype=tf.float32)),

'conv5': tf.get_variable('conv5', [256, ],
initializer=tf.constant_initializer(value=0.1, dtype=tf.float32)),

'fc1': tf.get_variable('fc1', [4096, ],
initializer=tf.constant_initializer(value=0.1, dtype=tf.float32)),

'fc2': tf.get_variable('fc2', [4096, ],
initializer=tf.constant_initializer(value=0.1, dtype=tf.float32)),

'fc3': tf.get_variable('fc3', [1000, ], initializer=tf.constant_initializer(value=0.1, dtype=tf.float32))

}

# 计算softmax交叉熵损失函数

def sorfmax_loss(self, predicts, labels):
predicts = tf.nn.softmax(predicts)

labels = tf.one_hot(labels, self.weights['fc3'].get_shape().as_list()[1])

loss = tf.nn.softmax_cross_entropy_with_logits(logits=predicts, labels=labels)

#  loss =-tf.reduce_mean(labels * tf.log(predicts))# tf.nn.softmax_cross_entropy_with_logits(predicts, labels)

self.cost = loss

return self.cost

# 梯度下降

def optimer(self, loss, lr=0.01):

return train_optimizer

#定义训练
# def train(self):
create_record('/Users/hanjiarong/Documents/testdata/tfrtrain')
# batch_image, batch_label = get_batch(image, label, 30)

#连接网络 网络训练
net = network()
inf = net.inference(x, dropout)
loss = net.sorfmax_loss(inf,y)
opti = net.optimer(loss)
correct_pred = tf.equal(tf.argmax(inf, 1), tf.argmax(y, 1))
accuracy = tf.reduce_mean(tf.cast(correct_pred, tf.float32))

# #定义测试
create_test_record('/Users/hanjiarong/Documents/testdata/tfrtest')
# batch_test_image, batch_test_label = get_test_batch(image_t, label_t, 50)
#
# #生成测试

init = tf.initialize_all_variables()
with tf.Session() as session:
session.run(init)
coord = tf.train.Coordinator()
max_iter = 100000
iter = 1
print("begin1")
while iter * 30 < max_iter:
print("begin2")
print("begin3")
batch_image, batch_label = get_batch(image, label, 1)
print("begin4")
batch_image = session.run(batch_image)
batch_label = session.run(batch_label)
print("begin5")
# loss_np, _, label_np, image_np, inf_np = session.run([loss, opti, batch_label, batch_image, inf])
session.run(opti, feed_dict={x: batch_image, y: batch_label, keep_drop: dropout})
print("begin6")
if iter % 10 == 0:
loss, acc = session.run([loss, accuracy], feed_dict={x: batch_image, y: batch_label, keep_drop: 1.})
print("Iter " + str(iter * 30) + ", Minibatch Loss= " + \
"{:.6f}".format(loss) + ", Training Accuracy= " + "{:.5f}".format(acc))
iter += 1
print("Optimization Finished!")
batch_test_image, batch_test_label = get_batch(image, label, 2)
img_test, lab_test = session.run([batch_test_image, batch_test_label])
test_accuracy = session.run(accuracy,
feed_dict={x: img_test, y: lab_test, keep_drop: 1.})
print("Testing Accuracy:", test_accuracy)

``````

4个回答

Tensorflow中文社区测试版已经开放了，你可以去看，希望你能找到答案！

batch_size= batch_size,然后就可以跑了

Java学习的正确打开方式

Python——画一棵漂亮的樱花树（不同种樱花+玫瑰+圣诞树喔）

shell脚本：备份数据库、代码上线

IntelliJ IDEA 简称 IDEA，被业界公认为最好的 Java 集成开发工具，尤其在智能代码助手、代码自动提示、代码重构、代码版本管理(Git、SVN、Maven)、单元测试、代码分析等方面有着亮眼的发挥。IDEA 产于捷克，开发人员以严谨著称的东欧程序员为主。IDEA 分为社区版和付费版两个版本。 我呢，一直是 Eclipse 的忠实粉丝，差不多十年的老用户了。很早就接触到了 IDEA...

Redis 面试题 1、什么是 Redis?. 2、Redis 的数据类型？ 3、使用 Redis 有哪些好处？ 4、Redis 相比 Memcached 有哪些优势？ 5、Memcache 与 Redis 的区别都有哪些？ 6、Redis 是单进程单线程的？ 7、一个字符串类型的值能存储最大容量是多少？ 8、Redis 的持久化机制是什么？各自的优缺点？ 9、Redis 常见性...

【设计模式】单例模式的八种写法分析

《面试宝典》：检验是否为合格的初中级程序员的面试知识点，你都知道了吗？查漏补缺

【超详细分析】关于三次握手与四次挥手面试官想考我们什么？

2019年Spring Boot面试都问了什么？快看看这22道面试题！
Spring Boot 面试题 1、什么是 Spring Boot？ 2、Spring Boot 有哪些优点？ 3、什么是 JavaConfig？ 4、如何重新加载 Spring Boot 上的更改，而无需重新启动服务器？ 5、Spring Boot 中的监视器是什么？ 6、如何在 Spring Boot 中禁用 Actuator 端点安全性？ 7、如何在自定义端口上运行 Sprin...

JavaScript 中， 5 种增加代码可读性的最佳实践

【图解算法面试】记一次面试：说说游戏中的敏感词过滤是如何实现的？

GitHub 标星 1.6w+，我发现了一个宝藏项目，作为编程新手有福了！

Java知识体系最强总结(2020版)

Windows可谓是大多数人的生产力工具，集娱乐办公于一体，虽然在程序员这个群体中都说苹果是信仰，但是大部分不都是从Windows过来的，而且现在依然有很多的程序员用Windows。 所以，今天我就把我私藏的Windows必装的软件分享给大家，如果有一个你没有用过甚至没有听过，那你就赚了????，这可都是提升你幸福感的高效率生产力工具哦！ 走起！???? NO、1 ScreenToGif 屏幕，摄像头和白板...

Fiddler+夜神模拟器进行APP抓包
Java9到Java13各版本新特性代码全部详解(全网独家原创)
Java现在已经发展到了Java13了（正式版本），相信很多朋友还对各个版本还不是很熟悉，这里面专门把Java9到Java13各个版本的一些新特性做了一些详细讲解。我在网上也找了很多，但基本都是官方文档的CV，没有任何代码演示，而且官方的示例代码也不是很好找得到，官方API目前还是Java10，官方文档真是坑啊。所以我在这里专门写了一篇文章，主要针对平时开发与有关的功能Java9到Java13各...

Java程序员2020年最新进入 BATJ华为等大厂必读书单及技能
0 要做一名高级点儿的代码民工,我们首先要有如下各项技能 ! Google more and Baidu less! Stackoverflow First! Stack Overflow - Where Developers Learn, Share, &amp; Build Careers​stackoverflow.com 汇聚最多编程问题且有世界各路大佬解答 尝试着阅读官方原版...

CPU对每个程序员来说，是个既熟悉又陌生的东西？ 如果你只知道CPU是中央处理器的话，那可能对你并没有什么用，那么作为程序员的我们，必须要搞懂的就是CPU这家伙是如何运行的，尤其要搞懂它里面的寄存器是怎么一回事，因为这将让你从底层明白程序的运行机制。 随我一起，来好好认识下CPU这货吧 把CPU掰开来看 对于CPU来说，我们首先就要搞明白它是怎么回事，也就是它的内部构造，当然，CPU那么牛的一个东...

Python实战：抓肺炎疫情实时数据，画2019-nCoV疫情地图

[HTML] HTML常用基础标签

B 站上有哪些很好的学习资源?

[Pyhon疫情大数据分析] 一.腾讯实时数据爬取、Matplotlib和Seaborn可视化分析全国各地区、某省各城市、新增趋势

2020年十大前沿科技，了解一下

Python代码练习(一)：基础
Python代码练习(一)：基础 练习1 求从1到100的数字中所有能既能被3整除，又能被5整合的数字有哪些。 for x in range(1,101): if x%3==0 and x%5==0: print(x) else: pass 练习2： 输入一个字符串返回满足以下条件的字符串 ■ 如果字符串长度大等于3，添加 ‘ing’ 到字符...