Python 无效参数:无法从proto:dtype:DT\u FLOAT解析张量
我目前正试图在我拥有的图像数据集上运行一个卷积神经网络。每个图像都是一个尺寸为300、300、1的numpy数组。我使用的是Tensorflow和Keras的最新版本。我的X_列车的尺寸为195850、300、300、1。我的X_测试的尺寸为48850、300、300、1。我的Y_序列是一个195850个元素的向量,使用to_分类函数将其转换为一个热向量 这是我的密码:Python 无效参数:无法从proto:dtype:DT\u FLOAT解析张量,python,numpy,tensorflow,keras,protobuf-net,Python,Numpy,Tensorflow,Keras,Protobuf Net,我目前正试图在我拥有的图像数据集上运行一个卷积神经网络。每个图像都是一个尺寸为300、300、1的numpy数组。我使用的是Tensorflow和Keras的最新版本。我的X_列车的尺寸为195850、300、300、1。我的X_测试的尺寸为48850、300、300、1。我的Y_序列是一个195850个元素的向量,使用to_分类函数将其转换为一个热向量 这是我的密码: from keras.models import Sequential from keras.layers import LS
from keras.models import Sequential
from keras.layers import LSTM, MaxPooling2D, Convolution2D
from keras.layers import Activation, Dropout, Flatten, Dense
from keras import applications, backend as K
from keras.utils.np_utils import to_categorical
import pickle
import numpy as np
import tensorflow as tf
K.set_image_dim_ordering('tf')
nb_train_samples = 195850
nb_validation_samples = 48850
X_train = pickle.load(open(r'C:\Users\...\Documents\GitHub\ASL_Data\X_Train.pkl', 'rb'))
#X_train = np.moveaxis(np.array(X_train), 0, -1)
Y_train = pickle.load(open(r'C:\Users\...\Documents\GitHub\ASL_Data\Y_Train.pkl', 'rb'))
#Y_train = np.moveaxis(np.array(Y_train), 0, -1)
X_test = pickle.load(open(r'C:\Users\...\Documents\GitHub\ASL_Data\X_Test.pkl', 'rb'))
#X_test = np.moveaxis(np.array(X_test), 0, -1)
Y_test = pickle.load(open(r'C:\Users\\Documents\GitHub\ASL_Data\Y_Test.pkl', 'rb'))
#Y_test = np.moveaxis(np.array(Y_test), 0, -1)
print('X_train shape: ', np.array(X_train).shape)
print('Y_train shape: ', np.array(Y_train).shape)
epochs = 50
batch_size = 50
nb_batches = nb_train_samples // batch_size
input_shape = (300, 300)
print ('before model')
model = Sequential()
model.add(Convolution2D(filters=64, kernel_size=(3,3), data_format="channels_last", input_shape=(300, 300, 1,)))
model.add(Activation('relu'))
model.add(Convolution2D(64, (3, 3), input_shape=(300, 300, 1)))
model.add(Activation('relu'))
model.add(Dropout(0.25))
model.add(Convolution2D(128, (3, 3), input_shape=(300, 300, 1)))
model.add(Activation('relu'))
model.add(Dropout(0.25))
model.add(Flatten())
model.add(Dense(256))
model.add(Activation('relu'))
model.add(Dropout(0.5))
model.add(Dense(696))
model.add(Activation('softmax'))
print ('before model compile')
model.compile(loss='categorical_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
print ('after model')
for e in range(0, epochs):
for i in range(0, nb_batches):
start= i * batch_size
end = start + batch_size
channel = np.ones(1)
x_train = np.array(X_train[start:end][:][:])
x_train = x_train.reshape(batch_size, 300, 300, 1)
x_test = np.array(X_test[start:end][:][:])
x_test = x_test.reshape(batch_size, 300, 300, 1)
y_train = np.array(Y_train[start:end][:])
y_test = np.array(Y_test[start:end][:])
print('y_train shape: ', np.array(y_train).shape)
y_train = to_categorical(y_train, num_classes=696)
y_test = to_categorical(y_test, num_classes=696)
print('y_train shape: ', np.array(y_train).shape)
model.train_on_batch(x_train, y_train)
model.test_on_batch(x_test, y_test)
如您所见,我正在使用train_on_批处理函数,尽管我不认为这应该是我的错误的根源,这些错误是:
Traceback (most recent call last):
File "C:\Users\...\Documents\GitHub\ASL_Data\train2.py", line 86, in <module>
model.train_on_batch(x_train, y_train)
File "C:\Users\...\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\models.py", line 955, in train_on_batch
class_weight=class_weight)
File "C:\Users\...\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\engine\training.py", line 1762, in train_on_batch
outputs = self.train_function(ins)
File "C:\Users\...\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\backend\tensorflow_backend.py", line 2270, in __call__
session = get_session()
File "C:\Users\...\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\backend\tensorflow_backend.py", line 167, in get_session
_initialize_variables()
File "C:\Users\...\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\backend\tensorflow_backend.py", line 341, in _initialize_variables
sess.run(tf.variables_initializer(uninitialized_variables))
File "C:\Users\...\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\client\session.py", line 895, in run
run_metadata_ptr)
File "C:\Users\...\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\client\session.py", line 1124, in _run
feed_dict_tensor, options, run_metadata)
File "C:\Users\...\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\client\session.py", line 1321, in _do_run
options, run_metadata)
File "C:\Users\...\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\client\session.py", line 1340, in _do_call
raise type(e)(node_def, op, message)
tensorflow.python.framework.errors_impl.InvalidArgumentError: Cannot parse tensor from proto: dtype: DT_FLOAT
tensor_shape {
dim {
size: 11063808
}
dim {
size: 256
}
}
float_val: 0
[[Node: training/RMSprop/Const_6 = Const[dtype=DT_FLOAT, value=Tensor<type: float shape: [11063808,256] values: [0 0 0]...>, _device="/job:localhost/replica:0/task:0/gpu:0"]()]]
Caused by op 'training/RMSprop/Const_6', defined at:
File "C:\Users\...\Documents\GitHub\ASL_Data\train2.py", line 86, in <module>
model.train_on_batch(x_train, y_train)
File "C:\Users\...\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\models.py", line 955, in train_on_batch
class_weight=class_weight)
File "C:\Users\...\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\engine\training.py", line 1761, in train_on_batch
self._make_train_function()
File "C:\Users\...\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\engine\training.py", line 960, in _make_train_function
loss=self.total_loss)
File "C:\Users\...\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\legacy\interfaces.py", line 87, in wrapper
return func(*args, **kwargs)
File "C:\Users\...\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\optimizers.py", line 226, in get_updates
accumulators = [K.zeros(K.int_shape(p), dtype=K.dtype(p)) for p in params]
File "C:\Users\...\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\optimizers.py", line 226, in <listcomp>
accumulators = [K.zeros(K.int_shape(p), dtype=K.dtype(p)) for p in params]
File "C:\Users\...\AppData\Local\Programs\Python\Python36\lib\site-packages\keras\backend\tensorflow_backend.py", line 625, in zeros
return variable(tf.constant_initializer(0., dtype=tf_dtype)(shape),
File "C:\Users\...\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\ops\init_ops.py", line 203, in __call__
verify_shape=verify_shape)
File "C:\Users\...\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\framework\constant_op.py", line 106, in constant
attrs={"value": tensor_value, "dtype": dtype_value}, name=name).outputs[0]
File "C:\Users\...\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\framework\ops.py", line 2630, in create_op
original_op=self._default_original_op, op_def=op_def)
File "C:\Users\...\AppData\Local\Programs\Python\Python36\lib\site-packages\tensorflow\python\framework\ops.py", line 1204, in __init__
self._traceback = self._graph._extract_stack() # pylint: disable=protected-access
InvalidArgumentError (see above for traceback): Cannot parse tensor from proto: dtype: DT_FLOAT
tensor_shape {
dim {
size: 11063808
}
dim {
size: 256
}
}
float_val: 0
[[Node: training/RMSprop/Const_6 = Const[dtype=DT_FLOAT, value=Tensor<type: float shape: [11063808,256] values: [0 0 0]...>, _device="/job:localhost/replica:0/task:0/gpu:0"]()]]
回溯(最近一次呼叫最后一次):
文件“C:\Users\…\Documents\GitHub\ASL\u Data\train2.py”,第86行,在
批量生产的车型系列(x系列、y系列)
文件“C:\Users\…\AppData\Local\Programs\Python\Python36\lib\site packages\keras\models.py”,第955行,在批处理的列中
等级重量=等级重量)
文件“C:\Users\…\AppData\Local\Programs\Python\Python36\lib\site packages\keras\engine\training.py”,第1762行,在批处理的列中
输出=自列车功能(ins)
文件“C:\Users\…\AppData\Local\Programs\Python\Python36\lib\site packages\keras\backend\tensorflow\u backend.py”,第2270行,在调用中__
会话=获取会话()
文件“C:\Users\…\AppData\Local\Programs\Python\36\lib\site packages\keras\backend\tensorflow\u backend.py”,第167行,在get\u会话中
_初始化变量()
文件“C:\Users\…\AppData\Local\Programs\Python\36\lib\site packages\keras\backend\tensorflow\u backend.py”,第341行,在变量初始化中
sess.run(tf.variables\u初始值设定项(未初始化的\u变量))
文件“C:\Users\…\AppData\Local\Programs\Python\36\lib\site packages\tensorflow\Python\client\session.py”,第895行,正在运行
运行_元数据_ptr)
文件“C:\Users\…\AppData\Local\Programs\Python\36\lib\site packages\tensorflow\Python\client\session.py”,第1124行,正在运行
feed_dict_tensor、options、run_元数据)
文件“C:\Users\…\AppData\Local\Programs\Python\36\lib\site packages\tensorflow\Python\client\session.py”,第1321行,在运行中
选项,运行(元数据)
文件“C:\Users\…\AppData\Local\Programs\Python\36\lib\site packages\tensorflow\Python\client\session.py”,第1340行,在调用中
提升类型(e)(节点定义、操作、消息)
tensorflow.python.framework.errors\u impl.InvalidArgumentError:无法从proto:dtype:DT\u FLOAT解析张量
张量_形{
暗淡的{
尺寸:11063808
}
暗淡的{
尺码:256
}
}
浮动值:0
[[Node:training/RMSprop/Const_6=Const[dtype=DT_FLOAT,value=Tensor,_device=“/job:localhost/replica:0/task:0/gpu:0”]()]
由op“培训/RMSprop/Const_6”引起,定义为:
文件“C:\Users\…\Documents\GitHub\ASL\u Data\train2.py”,第86行,在
批量生产的车型系列(x系列、y系列)
文件“C:\Users\…\AppData\Local\Programs\Python\Python36\lib\site packages\keras\models.py”,第955行,在批处理的列中
等级重量=等级重量)
文件“C:\Users\…\AppData\Local\Programs\Python\36\lib\site packages\keras\engine\training.py”,第1761行,在批处理的列中
self.\u make\u train\u function()
文件“C:\Users\…\AppData\Local\Programs\Python\36\lib\site packages\keras\engine\training.py”,第960行,在函数“make\train”中
损失=自身总损失)
文件“C:\Users\…\AppData\Local\Programs\Python\Python36\lib\site packages\keras\legacy\interfaces.py”,第87行,在包装器中
返回函数(*args,**kwargs)
文件“C:\Users\…\AppData\Local\Programs\Python\Python36\lib\site packages\keras\optimizers.py”,第226行,在get\U更新中
累加器=[K.zeros(K.int_形(p),dtype=K.dtype(p)),用于参数中的p]
文件“C:\Users\…\AppData\Local\Programs\Python\36\lib\site packages\keras\optimizers.py”,第226行,在
累加器=[K.zeros(K.int_形(p),dtype=K.dtype(p)),用于参数中的p]
文件“C:\Users\…\AppData\Local\Programs\Python\36\lib\site packages\keras\backend\tensorflow\u backend.py”,第625行,以零表示
返回变量(tf.常量\u初始值设定项(0.,dtype=tf\u dtype)(形状),
文件“C:\Users\…\AppData\Local\Programs\Python\36\lib\site packages\tensorflow\Python\ops\init\u ops.py”,第203行,在调用中__
验证形状=验证形状)
文件“C:\Users\…\AppData\Local\Programs\Python\36\lib\site packages\tensorflow\Python\framework\constant\u op.py”,第106行,常量
attrs={“value”:tensor_value,“dtype”:dtype_value},name=name)。输出[0]
文件“C:\Users\…\AppData\Local\Programs\Python\36\lib\site packages\tensorflow\Python\framework\ops.py”,第2630行,位于create\u op
初始值=自身值。\默认值\初始值,初始值=初始值)
文件“C:\Users\…\AppData\Local\Programs\Python\36\lib\site packages\tensorflow\Python\framework\ops.py”,第1204行,在uu init中__
self._traceback=self._graph._extract_stack()35; pylint:disable=protected access
InvalidArgumentError(回溯见上文):无法从proto:dtype:DT_FLOAT解析张量
张量_形{
暗淡的{
尺寸:11063808
}
暗淡的{
尺码:256
}
}
浮动值:0
[[Node:training/RMSprop/Const_6=Const[dtype=DT_FLOAT,value=Tensor,_device=“/job:localhost/replica:0/task:0/gpu:0”]()]
我真的被困在这里,非常感谢您的帮助
谢谢如果你用
globalaveragepoolig2d()
替换flant()
,错误会消失吗?我想这可能是TF试图为如此大的密集的层分配内存时出现的内存错误。谢谢,使用globalaveragepoolig2d()修复了它。非常感谢您的帮助。如果您将flant()
替换为globalaveragepoolig2d()
,错误会消失吗?我想这可能是TF尝试为如此大的密集
层分配内存时出现的内存错误。谢谢,使用globalaveragepoolig2d()修复了它。非常感谢你的帮助。