python - FailedPreconditionError:尝试将未初始化的值 conv2d_1/kernel 与 Tensorflow/Python 一起使用
问题描述
我正在尝试借助以下代码创建一个 CNN 模型:
import tensorflow as tf
class Create_CNN:
def _conv(self, input, nChannels, kernelSize, kernelStride):
conv = tf.layers.conv2d(inputs=input,
filters=nChannels,
kernel_size=kernelSize,
strides=(kernelStride, kernelStride),
padding='same',
activation=tf.nn.relu
)
return conv
def create_cnn(self, input, nChannels, kernelSize, kernelStride):
input = tf.reshape(input, shape=[-1, 500, 530, 3])
layer1 = Create_CNN()._conv(input, nChannels, kernelSize, kernelStride)
layer2 = Create_CNN()._conv(layer1, nChannels, kernelSize, kernelStride)
layer3 = Create_CNN()._conv(layer2, nChannels, kernelSize, kernelStride)
layer4 = Create_CNN()._conv(layer3, nChannels, kernelSize, kernelStride)
layer5 = Create_CNN()._conv(layer4, nChannels, kernelSize, kernelStride)
return layer5
在这里,我的输入是 500 * 530 * 3 维图像。我正在尝试使用以下代码传递输入和其他参数:
with tf.Session().as_default():
tf.global_variables_initializer().run()
i = PlantUtils().create_instance('ara2013_plant001_rgb.png', 'ara2013_plant001_label.png', 500, 530, 100, 106, 1, 1,
1)
input_image = i[0] # It is a 500 * 530 * 3 tensor
b = Create_CNN().create_cnn(input=input_image, kernelSize=3, kernelStride=1, nChannels=30)
x = tf.argmax(input=b, axis=1)
print x.eval()
当我尝试打印 logits(x 的平均值)时,出现以下错误:
FailedPreconditionError (see above for traceback): Attempting to use uninitialized value conv2d_1/kernel
我不确定我做错了什么。我需要查看我的 CNN 模型生成的 logits。我真的需要这方面的帮助。
解决方案
发生这种情况是因为您在构建图形之前运行了初始化程序。理想情况下,您应该Graph
在创建Session
. 尝试这个
with tf.Graph().as_default():
i = PlantUtils().create_instance('ara2013_plant001_rgb.png', 'ara2013_plant001_label.png', 500, 530, 100, 106, 1, 1, 1)
input_image = i[0] # It is a 500 * 530 * 3 tensor
b = Create_CNN().create_cnn(input=input_image, kernelSize=3, kernelStride=1, nChannels=30)
x = tf.argmax(input=b, axis=1)
with tf.Session() as sess:
sess.run(tf.global_variables_initializer())
print sess.run(x)
推荐阅读
- yii2 - Yii2 '您的系统不支持以下任何驱动程序:gmagick,imagick,gd2'
- geocoding - 从经纬度坐标中寻找选区
- html - 如何在 CSS 中处理设备屏幕分辨率与设备浏览器屏幕分辨率之间的差异
- java - Lombok 的应用程序构建失败原因
- python - 我在将计时器设置为递归函数时遇到问题,我想在 python 中停止运行太久
- java - 带有实现的Java8函数应用方法
- java - 带有拖放功能的 Android 网格列表
- .net - Quartz .Net 导致 services.exe 导致 services.exe 上的 CPU 峰值
- angular - Angular如何在单击时刷新可观察的数据
- spring-boot - 使用邮递员的春季启动@ManytoOne