Python 无效参数:无法从proto:dtype:DT\u FLOAT解析张量

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

我目前正试图在我拥有的图像数据集上运行一个卷积神经网络。每个图像都是一个尺寸为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 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()修复了它。非常感谢你的帮助。