python-3.x - AttributeError:“DType”对象没有属性“类型”Tensorflow Serving
问题描述
我正在尝试在 tensorflow 中使用一个函数(来自另一个模块)。该函数接受一个 numpy 数组并返回更改点。我的主要目标是在 tensorflow 服务上部署这个模型。我遇到了错误
AttributeError:“DType”对象没有属性“类型”
有 2 个函数,一个是 create_data(),它创建一个 numpy 数组并返回它,另一个是 change(),它接受 numpy 数组并使用前面提到的函数返回更改点。我创建了一个占位符来接受输入数据,一个执行函数的操作。问题是,如果我尝试通过占位符发送数据,我会遇到错误。如果我将数据直接发送到函数中,它就会运行。以下是我的代码。
def create_data():
np.random.seed(0)
size = 100
mean_a = 0.0
mean_b = 10.0
mean_c = 0
var = 0.1
data_a = np.random.normal(mean_a, var, size)
data_b = np.random.normal(mean_b, var, size)
data_c = np.random.normal(mean_c, var, size)
data = np.concatenate([data_a, data_b, data_c])
return data
def change(data):
# what else i tried
# data = np.array(data, dtype=np.float)
# above line gives another error mentioned after code
cpts = (pelt(normal_mean(x, np.var(x)), len(x)))
return cpts
sess = tf.Session()
x = tf.placeholder(tf.float32, shape=[300, ], name="myInput")
y = tf.convert_to_tensor(change(x),np.float32,name="myOutput")
z = sess.run(y,feed_dict={x:create_data()})
如果我尝试data = np.array(data, dtype=np.float)
函数 change() 中的代码,它会给我错误
ValueError:使用序列设置数组元素。
我也尝试过data = np.hstack((data)).astype(np.float)
,data = np.vstack((data)).astype(np.float)
但它遇到了一个单独的错误,说使用 tf.map_fn。我还尝试使用 tf.eval() 来转换数字,但我无法让它们在带有占位符的函数中运行。
但是如果我直接发送输出,
y = tf.convert_to_tensor(change(create_data()),np.float32,name="myOutput")
有用。
我应该如何发送输入以使其工作?
编辑:如果有人想知道,有问题的功能就是这个。
解决方案
当您尝试将张量传递给 numpy 函数时会引发此错误
您需要使用tf.py_func将 python 函数包含到 tensorflow 图中
(另外,你的 change() 函数使用数据作为参数而不是 x)
这是对我有用的代码
import numpy as np
import tensorflow as tf
from changepy import pelt
from changepy.costs import normal_mean
def create_data():
np.random.seed(0)
size = 100
mean_a = 0.0
mean_b = 10.0
mean_c = 0
var = 0.1
data_a = np.random.normal(mean_a, var, size)
data_b = np.random.normal(mean_b, var, size)
data_c = np.random.normal(mean_c, var, size)
data = np.concatenate([data_a, data_b, data_c])
return data
def change(x):
# what else i tried
# data = np.array(data, dtype=np.float)
# above line gives another error mentioned after code
cpts = (pelt(normal_mean(x, np.var(x)), len(x)))
return cpts
sess = tf.Session()
x = tf.placeholder(tf.float32, shape=[300, ], name="myInput")
y = tf.convert_to_tensor(tf.compat.v1.py_func(change, [x], 3*[tf.int64]),np.float32,name="myOutput")
z = sess.run(y,feed_dict={x:create_data()})
print(z)
推荐阅读
- javascript - 如何使用 JavaScript在链接的 HTMLCollection 中选择文本?
- react-native - 检查屏幕是否在 React Native 中变得模糊或聚焦?
- dataweave - Mule 4:Objectstore:无法反序列化对象
- php - PHP:shell_exec 拒绝 shell 命令的密码,但在 shell 中工作
- c# - 当 CPU 通过 IIS 高级 CPU 设置达到峰值时终止 W3WP
- python - 密集层:TypeError:init()缺少1个必需的位置参数:'units'
- azure - 管道中的天蓝色功能活动
- html - 我无法正确定位边界线
- javascript - 如何在 React + Material UI 中正确切换 RTL/LTR?
- angular - 在 Ionic 5 上未触发 Press 事件