Kernel_initializer в Tensorflow с dtype = tf.int32 приводит к ошибке: TypeError: Невозможно преобразовать 0.0 в EagerTensor dtype int32 - PullRequest
0 голосов
/ 20 апреля 2020

Я новичок в Tensorflow и хочу построить модель с инициализатором веса. Я хочу инициализировать веса с random int32 . Я определил функцию для генерации случайных чисел как инициализатор весов. Сама функция в порядке. Но когда я хочу использовать функцию в одном слое в качестве kernel_initializer, я сталкиваюсь с этой ошибкой:

Ошибка типа: невозможно преобразовать 0,0 в EagerTensor типа d32 int32

Мой код ниже:

from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense, Conv2D, Flatten, MaxPooling2D, AveragePooling2D, Softmax
import tensorflow.keras.backend as K

model = Sequential()

model.add(Conv2D(6,kernel_size=5,activation='relu',input_shape=(32,32,1),name='Conv1'))


def my_init(shape, dtype=None):
    return K.random_normal(shape, dtype=tf.int32)

model.add(Dense(64, kernel_initializer=my_init))

Я также попробовал другую функцию, которую я определил np.array типы данных. Он не выдает ошибку, но когда я попытался увидеть вес слоев, он показал, что типы весов: float32 , а не int32 . Моя проблема в том, чтобы получить int32 типы данных для весов.

Любая помощь будет оценена.

...